Carousel Slider - Version 1.10.2

Version Description

Download this release

Release Info

Developer sayful
Plugin Icon Carousel Slider
Version 1.10.2
Comparing to
See all releases

Code changes from version 1.9.5 to 1.10.2

Files changed (83) hide show
  1. assets/css/admin.css +15 -1
  2. assets/js/admin.js +1 -1
  3. assets/lib/jquery-tiptip/jquery.tipTip.js +0 -191
  4. assets/lib/jquery-tiptip/jquery.tipTip.min.js +0 -1
  5. assets/src/admin/accordion.js +0 -15
  6. assets/src/admin/hero-banner.js +0 -295
  7. assets/src/admin/media-gallery.js +0 -131
  8. assets/src/admin/media-url.js +0 -40
  9. assets/src/admin/modal.js +0 -16
  10. assets/src/admin/slide-type.js +0 -144
  11. assets/src/admin/vendors.js +0 -69
  12. assets/src/frontend/main.js +0 -75
  13. assets/src/gutenberg-block/main.js +0 -223
  14. assets/src/img/ajax-loader.gif +0 -0
  15. assets/src/img/play.svg +0 -1
  16. assets/src/scss/admin.scss +0 -14
  17. assets/src/scss/admin/_datepicker.scss +0 -46
  18. assets/src/scss/admin/_documentation.scss +0 -44
  19. assets/src/scss/admin/_meta-box.scss +0 -239
  20. assets/src/scss/admin/_modal.scss +0 -108
  21. assets/src/scss/admin/_model.scss +0 -140
  22. assets/src/scss/admin/_select2.scss +0 -634
  23. assets/src/scss/admin/_tab.scss +0 -79
  24. assets/src/scss/admin/_toggle.scss +0 -51
  25. assets/src/scss/admin/_tooltip.scss +0 -133
  26. assets/src/scss/admin/_widget.scss +0 -10
  27. assets/src/scss/frontend.scss +0 -21
  28. assets/src/scss/gutenberg-block.scss +0 -108
  29. assets/src/scss/public/_animate.scss +0 -96
  30. assets/src/scss/public/_autoheight.scss +0 -7
  31. assets/src/scss/public/_button.scss +0 -39
  32. assets/src/scss/public/_content-carousel.scss +0 -162
  33. assets/src/scss/public/_core.scss +0 -109
  34. assets/src/scss/public/_image-carousel.scss +0 -34
  35. assets/src/scss/public/_lazyload.scss +0 -17
  36. assets/src/scss/public/_magnific-popup.scss +0 -603
  37. assets/src/scss/public/_post-carousel.scss +0 -100
  38. assets/src/scss/public/_post-carousel2.scss +0 -63
  39. assets/src/scss/public/_product-carousel.scss +0 -197
  40. assets/src/scss/public/_product_modal.scss +0 -197
  41. assets/src/scss/public/_theme.scss +0 -136
  42. assets/src/scss/public/_variables.scss +0 -5
  43. assets/src/scss/public/_video.scss +0 -38
  44. assets/src/scss/utilities/_mixins.scss +0 -84
  45. assets/src/scss/utilities/_variables.scss +0 -145
  46. carousel-slider.php +46 -35
  47. classes/Admin/Admin.php +98 -0
  48. classes/Admin/GutenbergBlock.php +91 -0
  49. classes/Admin/Setting.php +66 -0
  50. classes/Ajax.php +42 -0
  51. classes/Assets.php +201 -0
  52. classes/Autoloader.php +146 -0
  53. classes/Frontend/Frontend.php +62 -0
  54. classes/Frontend/Preview.php +44 -0
  55. classes/Frontend/Shortcode.php +376 -0
  56. classes/Frontend/StructuredData.php +298 -0
  57. classes/Integration/VisualComposerElement.php +81 -0
  58. classes/Plugin.php +196 -0
  59. classes/Supports/SettingAPI.php +669 -0
  60. widgets/widget-carousel_slider.php → classes/Widget/CarouselSliderWidget.php +66 -43
  61. classes/i18n.php +42 -0
  62. dummy-data/carousel-slider.xml +0 -739
  63. includes/class-carousel-slider-activator.php +1 -1
  64. includes/class-carousel-slider-admin.php +58 -13
  65. includes/class-carousel-slider-credit.php +0 -57
  66. includes/class-carousel-slider-documentation.php +0 -48
  67. includes/class-carousel-slider-gutenberg-block.php +0 -90
  68. includes/class-carousel-slider-i18n.php +0 -55
  69. includes/class-carousel-slider-preview.php +0 -45
  70. includes/class-carousel-slider-product.php +18 -24
  71. includes/class-carousel-slider-script.php +0 -226
  72. includes/class-carousel-slider-setting-api.php +0 -683
  73. includes/class-carousel-slider-setting.php +0 -67
  74. includes/class-carousel-slider-structured-data.php +0 -317
  75. includes/class-carousel-slider-vc-element.php +0 -89
  76. languages/carousel-slider.pot +1484 -0
  77. modules/index.php +1 -0
  78. readme.txt +15 -4
  79. shortcodes/class-carousel-slider-deprecated-shortcode.php +0 -193
  80. shortcodes/class-carousel-slider-shortcode.php +0 -384
  81. shortcodes/index.php +0 -2
  82. templates/public/video-carousel.php +16 -11
  83. widgets/index.php +0 -2
assets/css/admin.css CHANGED
@@ -1 +1,15 @@
1
- div[id*=_carousel_slider] .widget-top{background:#dff!important;border:1px solid #2196f3!important}div[id*=_carousel_slider] .widget-top:hover{background:#fdd!important;border:1px solid #f44336!important}.shapla-toggle{margin:1em 0!important}.shapla-toggle-title{display:block;padding:15px 10px;outline:0;cursor:pointer;position:relative}.shapla-toggle-title:after{position:absolute;right:15px;font:400 20px/1 dashicons;margin-left:-1px;padding-right:3px;vertical-align:top;content:"\f132"}.shapla-toggle-title.ui-state-active:after{content:"\f460"}.shapla-toggle-content{padding:20px;background-color:#f1f1f1}.shapla-toggle--normal .shapla-toggle-title{background:#9e9e9e;color:#fff;font-weight:600}.shapla-toggle--stroke .shapla-toggle-title{border:1px solid #363f48;font-weight:600}.shapla-toggle--stroke .shapla-toggle-title:after{color:#363f48}.shapla-toggle--stroke .shapla-toggle-content{padding:20px;background-color:#fff;border:1px solid #363f48;border-top:none}.overflowHidden{overflow:hidden}.overflowVisible{overflow:visible}.sp-input-group{margin-bottom:10px}.sp-input-group:after{content:"";display:table;clear:both}.sp-input-label label{font-weight:600;margin-right:30px}.sp-input-field,.sp-input-label{float:left;width:100%}.sp-input-desc{color:#999;font-size:.9em;line-height:1.3em;margin:10px 30px 10px 0}.sp-input-text{width:100%;padding:8px 8px 8px 16px;height:35px!important}.sp-input-text option{padding:8px 4px}.spacing-text{width:62px}@media only screen and (min-width:600px){.sp-input-label{width:40%}.sp-input-field{width:60%}}@media only screen and (min-width:783px){.sp-input-label{width:30%}.sp-input-field{width:70%}.sp-input-text{width:25em}}@media only screen and (min-width:851px){.sp-input-field,.sp-input-label{width:100%}}@media only screen and (min-width:1200px){.sp-input-label{width:40%}.sp-input-field{width:60%}}@media only screen and (min-width:1600px){.sp-input-label{width:30%}.sp-input-field{width:70%}}.carousel_slider_images:after,.carousel_slider_images:before{display:table;content:""}.carousel_slider_images:after{clear:both}.carousel_slider_gallery_btn{border:1px solid #616161;color:#616161;background-color:#f1f1f1;padding:5px 15px;text-decoration:none}.carousel_slider_gallery_btn:hover{background-color:#fff;color:#616161}.carousel_slider_gallery_list{margin:15px 0 0;padding:0;list-style:none;box-sizing:border-box}.carousel_slider_gallery_list:after,.carousel_slider_gallery_list:before{display:table;content:""}.carousel_slider_gallery_list:after{clear:both}.carousel_slider_gallery_list li{float:left;margin:0;padding:0}.carousel_slider_gallery_list li>img{margin-right:10px;margin-bottom:10px;display:block;box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}#field-_post_categories,#field-_post_date_after,#field-_post_date_before,#field-_post_in,#field-_post_tags,#field-_product_categories,#field-_product_in,#field-_product_query,#field-_product_tags{display:none}#carousel-slider-autoplay-settings p,#carousel-slider-navigation-settings p,#carousel-slider-responsive-settings p{overflow:hidden}#carousel-slider-autoplay-settings input.small-text,#carousel-slider-autoplay-settings select.small-text,#carousel-slider-navigation-settings input.small-text,#carousel-slider-navigation-settings select.small-text,#carousel-slider-responsive-settings input.small-text,#carousel-slider-responsive-settings select.small-text{float:right}.tab-background .slide_bg_wrapper{display:flex;padding:1rem 0}.tab-background .slide_thumb{position:relative;float:left;margin-right:1rem;border:1px solid #e0e0e0;padding:5px}.tab-background .slide_thumb>div{width:320px;height:180px;background-color:#f1f1f1;background-repeat:no-repeat;background-position:0 0;background-size:100% auto}.tab-background .slide_thumb>span{display:inline-block;position:absolute;top:0;right:0;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:14px;padding:3px;background-color:rgba(0,0,0,.5);color:#fff;cursor:pointer;transition:all .3s ease-in-out}.tab-background .slide_thumb>span.hidden{display:none!important}.tab-background .slide_image_settings_line{display:block;margin:.5rem 0}.tab-background .slide_image_settings_line>span{width:150px;display:inline-block}.ui-datepicker{background-color:#fff;border:1px solid #ccc;box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);padding:8px;display:none}.ui-datepicker-header{background-color:#f1f1f1}.ui-datepicker-next,.ui-datepicker-prev{color:#000;padding:6px;cursor:pointer}.ui-datepicker-next:hover,.ui-datepicker-prev:hover{color:#000}.ui-datepicker-prev{float:left}.ui-datepicker-next{float:right}.ui-datepicker-calendar td>a{border:1px solid #ddd;display:block;padding:6px;text-decoration:none;color:#000;background-color:#f1f1f1}.ui-datepicker-calendar td.ui-datepicker-today>a{color:#000;background-color:#ffeb3b}.ui-datepicker-calendar td.ui-datepicker-current-day>a{color:#fff;background-color:#f44336}.sp-wp-editor-container{max-width:560px}.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:0;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:0}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:0;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:0;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #000;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:0;outline:0;background-image:linear-gradient(180deg,#fff 50%,#eee);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF",endColorstr="#FFEEEEEE",GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:linear-gradient(180deg,#eee 50%,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE",endColorstr="#FFCCCCCC",GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:linear-gradient(180deg,#fff 0,#eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF",endColorstr="#FFEEEEEE",GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:linear-gradient(180deg,#eee 50%,#fff);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE",endColorstr="#FFFFFFFF",GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:0;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:0;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}.carousel_slider-modal{display:none;position:fixed;z-index:10000;left:0;top:0;width:100%;height:100%;overflow:hidden;background-color:#000;background-color:rgba(0,0,0,.8)}.carousel_slider-modal-content{position:relative;background-color:#fefefe;margin:50px auto 18px;padding:0;border:1px solid #23282d;min-height:300px;width:412px;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.carousel_slider-modal-header{background-color:#23282d;color:#fff;font-weight:700;padding:10px 16px}.carousel_slider-modal-body{overflow-x:hidden;overflow-y:scroll;padding:2px 16px}.carousel_slider-modal-footer{background-color:#23282d;color:#fff;font-weight:700;padding:10px 16px}.carousel_slider-modal-footer img{display:none;height:14px;vertical-align:middle;width:14px}.carousel_slider-form{margin-left:-15px;margin-right:-15px}.carousel_slider-fields{background-color:#f1f1f1;margin:15px;padding:15px 25px 15px 15px;position:relative;display:inline-block;float:left}.carousel_slider-fields label.setting{display:block;margin-bottom:5px}.carousel_slider-fields label.setting .name{display:inline-block;vertical-align:top;width:75px}.carousel_slider-fields label.setting input,.carousel_slider-fields label.setting textarea{width:250px}.carousel_slider-fields .actions{position:absolute;right:0;top:0}.carousel_slider-fields .actions>span{background:#fff none repeat scroll 0 0;display:block;float:none;cursor:pointer}.carousel_slider-fields .actions>span .dashicons-plus-alt:hover{color:green}.carousel_slider-fields .actions>span .dashicons-trash:hover{color:red}.carousel_slider-close{color:#f1f1f1;float:right;font-size:28px;font-weight:700}.carousel_slider-close:focus,.carousel_slider-close:hover{color:#fff;text-decoration:none;cursor:pointer}.carousel_slider_url_images_list{margin:15px 0 0;padding:0;list-style:none}.carousel_slider_url_images_list li{float:left;display:inline-block;margin:0 5px 5px 0}@media only screen and (min-width:820px){.carousel_slider-modal-content{width:810px}}@media only screen and (min-width:1230px){.carousel_slider-modal-content{width:1220px}}.modal{bottom:0;left:0;position:absolute;right:0;top:0;align-items:center;display:none;justify-content:center;overflow:hidden;position:fixed;z-index:10000}.admin-bar .modal{top:32px}.modal .delete-icon{-webkit-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,.2);border:none;border-radius:32px;cursor:pointer;display:inline-block;flex-grow:0;flex-shrink:0;font-size:1rem;outline:none;position:relative;vertical-align:top;height:20px;width:20px}.modal .delete-icon:after,.modal .delete-icon:before{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal .delete-icon:before{height:2px;width:50%}.modal .delete-icon:after{height:50%;width:2px}.modal .delete-icon:focus,.modal .delete-icon:hover{background-color:rgba(0,0,0,.3)}.modal .delete-icon:active{background-color:rgba(0,0,0,.4)}.modal .delete-icon.is-small{height:16px;width:16px}.modal .delete-icon.is-medium{height:24px;width:24px}.modal .delete-icon.is-large{height:32px;width:32px}.modal.is-active{display:flex}.modal-background{bottom:0;left:0;position:absolute;right:0;top:0;background-color:rgba(0,0,0,.86)}.modal-card,.modal-content{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media print,screen and (min-width:769px){.modal-card,.modal-content{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{-webkit-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,.2);border:none;border-radius:32px;cursor:pointer;display:inline-block;flex-grow:0;flex-shrink:0;font-size:1rem;outline:none;position:relative;vertical-align:top;height:20px;width:20px;background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-close:after,.modal-close:before{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close:before{height:2px;width:50%}.modal-close:after{height:50%;width:2px}.modal-close:focus,.modal-close:hover{background-color:rgba(0,0,0,.3)}.modal-close:active{background-color:rgba(0,0,0,.4)}.modal-close.is-small{height:16px;width:16px}.modal-close.is-medium{height:24px;width:24px}.modal-close.is-large{height:32px;width:32px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden}.modal-card-foot,.modal-card-head{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;margin:0;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #f5f5f5;border-top-left-radius:5px;border-top-right-radius:5px}.modal-card-title{color:#212121;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1;margin:0;padding:0}.modal-card-foot{border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:1px solid #f5f5f5}.modal-card-foot .button:not(:last-child){margin-right:10px}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;margin:0;padding:20px}.cs-tooltip{display:inline-block;width:1.5em;height:1.5em;float:right}.cs-tooltip:after{font-family:Dashicons;speak:none;font-weight:400;text-transform:none;-webkit-font-smoothing:antialiased;width:100%;height:100%;text-align:center;content:"\f223";cursor:help}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:99999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_left{padding-right:5px}#tiptip_content{font-size:11px;color:#fff;text-shadow:0 0 2px #000;padding:4px 8px;border:1px solid hsla(0,0%,100%,.25);background-color:#191919;background-color:rgba(25,25,25,.92);background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(#000));border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;box-shadow:0 0 3px #555;-webkit-box-shadow:0 0 3px #555;-moz-box-shadow:0 0 3px #555}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border:6px solid transparent;height:0;width:0}#tiptip_holder.tip_top #tiptip_arrow{border-top-color:#fff;border-top-color:hsla(0,0%,100%,.35)}#tiptip_holder.tip_bottom #tiptip_arrow{border-bottom-color:#fff;border-bottom-color:hsla(0,0%,100%,.35)}#tiptip_holder.tip_right #tiptip_arrow{border-right-color:#fff;border-right-color:hsla(0,0%,100%,.35)}#tiptip_holder.tip_left #tiptip_arrow{border-left-color:#fff;border-left-color:hsla(0,0%,100%,.35)}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#191919;border-top-color:rgba(25,25,25,.92)}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#191919;border-bottom-color:rgba(25,25,25,.92)}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#191919;border-right-color:rgba(25,25,25,.92)}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#191919;border-left-color:rgba(25,25,25,.92)}@media screen and (-webkit-min-device-pixel-ratio:0){#tiptip_content{padding:4px 8px 5px;background-color:rgba(45,45,45,.88)}#tiptip_holder.tip_bottom #tiptip_arrow_inner{border-bottom-color:rgba(45,45,45,.88)}#tiptip_holder.tip_top #tiptip_arrow_inner{border-top-color:rgba(20,20,20,.92)}}.shapla-nav{list-style:none!important;margin:0;padding:0}.shapla-nav:after,.shapla-nav:before{display:table;content:" "}.shapla-nav:after{clear:both}.shapla-nav li{float:left;position:relative;margin:0 1px -1px 0!important;z-index:1;outline:0}.shapla-nav a{text-decoration:none;display:block;padding:15px 10px;line-height:1;outline:0}.shapla-tab{margin:0 0 2em;padding:21px 20px 20px}.shapla-tab p:first-of-type{margin-top:0}.shapla-tab p:last-of-type{margin-bottom:0}.shapla-tabs--normal .shapla-nav a{background:#323232;color:#fff}.shapla-tabs--normal .shapla-nav .ui-tabs-active a{background:#f1f1f1;color:#323232;outline:0}.shapla-tabs--normal .shapla-tab{background:#f1f1f1}.shapla-tabs--stroke .shapla-nav li{margin:0 -1px 0 0!important}.shapla-tabs--stroke .shapla-nav a{border:1px solid #323232;color:#323232}.shapla-tabs--stroke .shapla-nav .ui-tabs-active a{border-bottom-color:#fff}.shapla-tabs--stroke .shapla-tab{border:1px solid #323232;margin-top:-1px}.carousel_slider_iframe{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.carousel_slider_iframe>iframe{position:absolute;top:0;left:0;width:100%;height:100%}.carousel_slider_columns{display:flex;flex-wrap:wrap;box-sizing:border-box}.carousel_slider_column{flex:0 0 100%;padding:1rem;box-sizing:border-box}@media screen and (min-width:601px){.carousel_slider_column{flex:0 0 50%}}@media screen and (min-width:1025px){.carousel_slider_column{flex:0 0 33.333333%}}@media screen and (min-width:1400px){.carousel_slider_column{flex:0 0 25%}}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ div[id*=_carousel_slider] .widget-top{background:#dff!important;border:1px solid #2196f3!important}div[id*=_carousel_slider] .widget-top:hover{background:#fdd!important;border:1px solid #f44336!important}.shapla-toggle{margin:1em 0!important}.shapla-toggle-title{display:block;padding:15px 10px;outline:0;cursor:pointer;position:relative}.shapla-toggle-title:after{position:absolute;right:15px;font:400 20px/1 dashicons;margin-left:-1px;padding-right:3px;vertical-align:top;content:"\f132"}.shapla-toggle-title.ui-state-active:after{content:"\f460"}.shapla-toggle-content{padding:20px;background-color:#f1f1f1}.shapla-toggle--normal .shapla-toggle-title{background:#9e9e9e;color:#fff;font-weight:600}.shapla-toggle--stroke .shapla-toggle-title{border:1px solid #363f48;font-weight:600}.shapla-toggle--stroke .shapla-toggle-title:after{color:#363f48}.shapla-toggle--stroke .shapla-toggle-content{padding:20px;background-color:#fff;border:1px solid #363f48;border-top:none}.overflowHidden{overflow:hidden}.overflowVisible{overflow:visible}.sp-input-group{margin-bottom:10px}.sp-input-group:after{content:"";display:table;clear:both}.sp-input-label label{font-weight:600;margin-right:30px}.sp-input-field,.sp-input-label{float:left;width:100%}.sp-input-desc{color:#999;font-size:.9em;line-height:1.3em;margin:10px 30px 10px 0}.sp-input-text{width:100%;padding:8px 8px 8px 16px;height:35px!important}.sp-input-text option{padding:8px 4px}.spacing-text{width:62px}@media only screen and (min-width:600px){.sp-input-label{width:40%}.sp-input-field{width:60%}}@media only screen and (min-width:783px){.sp-input-label{width:30%}.sp-input-field{width:70%}.sp-input-text{width:25em}}@media only screen and (min-width:851px){.sp-input-field,.sp-input-label{width:100%}}@media only screen and (min-width:1200px){.sp-input-label{width:40%}.sp-input-field{width:60%}}@media only screen and (min-width:1600px){.sp-input-label{width:30%}.sp-input-field{width:70%}}.carousel_slider_images:after,.carousel_slider_images:before{display:table;content:""}.carousel_slider_images:after{clear:both}.carousel_slider_gallery_btn{border:1px solid #616161;color:#616161;background-color:#f1f1f1;padding:5px 15px;text-decoration:none}.carousel_slider_gallery_btn:hover{background-color:#fff;color:#616161}.carousel_slider_gallery_list{margin:15px 0 0;padding:0;list-style:none;box-sizing:border-box}.carousel_slider_gallery_list:after,.carousel_slider_gallery_list:before{display:table;content:""}.carousel_slider_gallery_list:after{clear:both}.carousel_slider_gallery_list li{float:left;margin:0;padding:0}.carousel_slider_gallery_list li>img{margin-right:10px;margin-bottom:10px;display:block;box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}#field-_post_categories,#field-_post_date_after,#field-_post_date_before,#field-_post_in,#field-_post_tags,#field-_product_categories,#field-_product_in,#field-_product_query,#field-_product_tags{display:none}#carousel-slider-autoplay-settings p,#carousel-slider-navigation-settings p,#carousel-slider-responsive-settings p{overflow:hidden}#carousel-slider-autoplay-settings input.small-text,#carousel-slider-autoplay-settings select.small-text,#carousel-slider-navigation-settings input.small-text,#carousel-slider-navigation-settings select.small-text,#carousel-slider-responsive-settings input.small-text,#carousel-slider-responsive-settings select.small-text{float:right}.tab-background .slide_bg_wrapper{display:flex;padding:1rem 0}.tab-background .slide_thumb{position:relative;float:left;margin-right:1rem;border:1px solid #e0e0e0;padding:5px}.tab-background .slide_thumb>div{width:320px;height:180px;background-color:#f1f1f1;background-repeat:no-repeat;background-position:0 0;background-size:100% auto}.tab-background .slide_thumb>span{display:inline-block;position:absolute;top:0;right:0;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:14px;padding:3px;background-color:rgba(0,0,0,.5);color:#fff;cursor:pointer;transition:all .3s ease-in-out}.tab-background .slide_thumb>span.hidden{display:none!important}.tab-background .slide_image_settings_line{display:block;margin:.5rem 0}.tab-background .slide_image_settings_line>span{width:150px;display:inline-block}.ui-datepicker{background-color:#fff;border:1px solid #ccc;box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);padding:8px;display:none}.ui-datepicker-header{background-color:#f1f1f1}.ui-datepicker-next,.ui-datepicker-prev{color:#000;padding:6px;cursor:pointer}.ui-datepicker-next:hover,.ui-datepicker-prev:hover{color:#000}.ui-datepicker-prev{float:left}.ui-datepicker-next{float:right}.ui-datepicker-calendar td>a{border:1px solid #ddd;display:block;padding:6px;text-decoration:none;color:#000;background-color:#f1f1f1}.ui-datepicker-calendar td.ui-datepicker-today>a{color:#000;background-color:#ffeb3b}.ui-datepicker-calendar td.ui-datepicker-current-day>a{color:#fff;background-color:#f44336}.sp-wp-editor-container{max-width:560px}.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:0;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:0}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:0;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:0;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #000;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:0;outline:0;background-image:linear-gradient(180deg,#fff 50%,#eee);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF",endColorstr="#FFEEEEEE",GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:linear-gradient(180deg,#eee 50%,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE",endColorstr="#FFCCCCCC",GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:linear-gradient(180deg,#fff 0,#eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF",endColorstr="#FFEEEEEE",GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:linear-gradient(180deg,#eee 50%,#fff);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE",endColorstr="#FFFFFFFF",GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:0;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:0;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}.carousel_slider-modal{display:none;position:fixed;z-index:10000;left:0;top:0;width:100%;height:100%;overflow:hidden;background-color:#000;background-color:rgba(0,0,0,.8)}.carousel_slider-modal-content{position:relative;background-color:#fefefe;margin:50px auto 18px;padding:0;border:1px solid #23282d;min-height:300px;width:412px;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.carousel_slider-modal-header{background-color:#23282d;color:#fff;font-weight:700;padding:10px 16px}.carousel_slider-modal-body{overflow-x:hidden;overflow-y:scroll;padding:2px 16px}.carousel_slider-modal-footer{background-color:#23282d;color:#fff;font-weight:700;padding:10px 16px}.carousel_slider-modal-footer img{display:none;height:14px;vertical-align:middle;width:14px}.carousel_slider-form{margin-left:-15px;margin-right:-15px}.carousel_slider-fields{background-color:#f1f1f1;margin:15px;padding:15px 25px 15px 15px;position:relative;display:inline-block;float:left}.carousel_slider-fields label.setting{display:block;margin-bottom:5px}.carousel_slider-fields label.setting .name{display:inline-block;vertical-align:top;width:75px}.carousel_slider-fields label.setting input,.carousel_slider-fields label.setting textarea{width:250px}.carousel_slider-fields .actions{position:absolute;right:0;top:0}.carousel_slider-fields .actions>span{background:#fff none repeat scroll 0 0;display:block;float:none;cursor:pointer}.carousel_slider-fields .actions>span .dashicons-plus-alt:hover{color:green}.carousel_slider-fields .actions>span .dashicons-trash:hover{color:red}.carousel_slider-close{color:#f1f1f1;float:right;font-size:28px;font-weight:700}.carousel_slider-close:focus,.carousel_slider-close:hover{color:#fff;text-decoration:none;cursor:pointer}.carousel_slider_url_images_list{margin:15px 0 0;padding:0;list-style:none}.carousel_slider_url_images_list li{float:left;display:inline-block;margin:0 5px 5px 0}@media only screen and (min-width:820px){.carousel_slider-modal-content{width:810px}}@media only screen and (min-width:1230px){.carousel_slider-modal-content{width:1220px}}.modal{bottom:0;left:0;position:absolute;right:0;top:0;align-items:center;display:none;justify-content:center;overflow:hidden;position:fixed;z-index:10000}.admin-bar .modal{top:32px}.modal .delete-icon{-webkit-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,.2);border:none;border-radius:32px;cursor:pointer;display:inline-block;flex-grow:0;flex-shrink:0;font-size:1rem;outline:none;position:relative;vertical-align:top;height:20px;width:20px}.modal .delete-icon:after,.modal .delete-icon:before{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal .delete-icon:before{height:2px;width:50%}.modal .delete-icon:after{height:50%;width:2px}.modal .delete-icon:focus,.modal .delete-icon:hover{background-color:rgba(0,0,0,.3)}.modal .delete-icon:active{background-color:rgba(0,0,0,.4)}.modal .delete-icon.is-small{height:16px;width:16px}.modal .delete-icon.is-medium{height:24px;width:24px}.modal .delete-icon.is-large{height:32px;width:32px}.modal.is-active{display:flex}.modal-background{bottom:0;left:0;position:absolute;right:0;top:0;background-color:rgba(0,0,0,.86)}.modal-card,.modal-content{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media print,screen and (min-width:769px){.modal-card,.modal-content{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{-webkit-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,.2);border:none;border-radius:32px;cursor:pointer;display:inline-block;flex-grow:0;flex-shrink:0;font-size:1rem;outline:none;position:relative;vertical-align:top;height:20px;width:20px;background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-close:after,.modal-close:before{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close:before{height:2px;width:50%}.modal-close:after{height:50%;width:2px}.modal-close:focus,.modal-close:hover{background-color:rgba(0,0,0,.3)}.modal-close:active{background-color:rgba(0,0,0,.4)}.modal-close.is-small{height:16px;width:16px}.modal-close.is-medium{height:24px;width:24px}.modal-close.is-large{height:32px;width:32px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden}.modal-card-foot,.modal-card-head{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;margin:0;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #f5f5f5;border-top-left-radius:5px;border-top-right-radius:5px}.modal-card-title{color:#212121;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1;margin:0;padding:0}.modal-card-foot{border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:1px solid #f5f5f5}.modal-card-foot .button:not(:last-child){margin-right:10px}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;margin:0;padding:20px}.shapla-nav{list-style:none!important;margin:0;padding:0}.shapla-nav:after,.shapla-nav:before{display:table;content:" "}.shapla-nav:after{clear:both}.shapla-nav li{float:left;position:relative;margin:0 1px -1px 0!important;z-index:1;outline:0}.shapla-nav a{text-decoration:none;display:block;padding:15px 10px;line-height:1;outline:0}.shapla-tab{margin:0 0 2em;padding:21px 20px 20px}.shapla-tab p:first-of-type{margin-top:0}.shapla-tab p:last-of-type{margin-bottom:0}.shapla-tabs--normal .shapla-nav a{background:#323232;color:#fff}.shapla-tabs--normal .shapla-nav .ui-tabs-active a{background:#f1f1f1;color:#323232;outline:0}.shapla-tabs--normal .shapla-tab{background:#f1f1f1}.shapla-tabs--stroke .shapla-nav li{margin:0 -1px 0 0!important}.shapla-tabs--stroke .shapla-nav a{border:1px solid #323232;color:#323232}.shapla-tabs--stroke .shapla-nav .ui-tabs-active a{border-bottom-color:#fff}.shapla-tabs--stroke .shapla-tab{border:1px solid #323232;margin-top:-1px}.carousel_slider_iframe{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.carousel_slider_iframe>iframe{position:absolute;top:0;left:0;width:100%;height:100%}.carousel_slider_columns{display:flex;flex-wrap:wrap;box-sizing:border-box}.carousel_slider_column{flex:0 0 100%;padding:1rem;box-sizing:border-box}@media screen and (min-width:601px){.carousel_slider_column{flex:0 0 50%}}@media screen and (min-width:1025px){.carousel_slider_column{flex:0 0 33.333333%}}@media screen and (min-width:1400px){.carousel_slider_column{flex:0 0 25%}}.shapla-tooltip{transform:scale(0);transform-origin:top center;z-index:9999;border-radius:2px;display:inline-block;font-size:12px;font-weight:400;line-height:1.2;max-width:170px;position:fixed;top:-500px;left:-500px;padding:8px;text-align:center;box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.2),0 1px 8px 0 rgba(0,0,0,.12);background-color:rgba(0,0,0,.92);background-image:linear-gradient(180deg,transparent,#000);color:#fff}.shapla-tooltip.is-light-theme{background-color:hsla(0,0%,96.1%,.92);background-image:linear-gradient(180deg,transparent,#f5f5f5);color:#323232}.shapla-tooltip.is-active{-webkit-animation:shapla-tooltip-pulse .2s cubic-bezier(0,0,.2,1) forwards;animation:shapla-tooltip-pulse .2s cubic-bezier(0,0,.2,1) forwards}.shapla-tooltip--large{line-height:14px;font-size:16px;padding:16px}@-webkit-keyframes shapla-tooltip-pulse{0%{transform:scale(0);opacity:0}50%{transform:scale(.99)}to{transform:scale(1);opacity:1;visibility:visible}}@keyframes shapla-tooltip-pulse{0%{transform:scale(0);opacity:0}50%{transform:scale(.99)}to{transform:scale(1);opacity:1;visibility:visible}}[data-tooltip-target]{display:inline-block;float:right;height:1.5em;position:relative;width:1.5em}[data-tooltip-target]:after{font-family:Dashicons;speak:none;font-weight:400;text-transform:none;-webkit-font-smoothing:antialiased;width:100%;height:100%;text-align:center;content:"\f223";cursor:help}
2
+
3
+ .cs_plugin_upgrade_notice.major_update {
4
+ border-top: 1px solid #dba617;
5
+ margin-top: 1rem;
6
+ padding: 1rem 0;
7
+ }
8
+
9
+ .cs_plugin_upgrade_notice__title {
10
+ font-size: 1.125em;
11
+ }
12
+
13
+ .cs_plugin_upgrade_notice__description {
14
+ padding-top: 1rem;
15
+ }
assets/js/admin.js CHANGED
@@ -1 +1 @@
1
- !function(e){"use strict";e(document).on("click",".accordion-header",(function(){e(this).toggleClass("active");var t=e(this).next();parseInt(t.css("max-height"))>0?(t.css("max-height","0"),t.css("overflow","hidden")):(t.css("max-height",t.prop("scrollHeight")+"px"),t.css("overflow","visible"))}))}(jQuery),function(e){"use strict";var t,i,o,s,a,n,l=e("body"),d=e("#contentButtonModal");l.on("click",".carousel-slider__add-slide",(function(t){t.preventDefault(),e.ajax({url:ajaxurl,method:"POST",data:{action:"add_content_slide",task:"add-slide",post_id:e(this).data("post-id")},success:function(){window.location.reload(!0)}})})),l.on("click",".carousel_slider__delete_slide",(function(t){t.preventDefault(),e.ajax({url:ajaxurl,method:"POST",data:{action:"add_content_slide",task:"delete-slide",post_id:e(this).data("post-id"),slide_pos:e(this).data("slide-pos")},success:function(){window.location.reload(!0)}})})),l.on("click",".carousel_slider__move_top",(function(t){t.preventDefault(),e.ajax({url:ajaxurl,method:"POST",data:{action:"add_content_slide",task:"move-slide-top",post_id:e(this).data("post-id"),slide_pos:e(this).data("slide-pos")},success:function(){window.location.reload(!0)}})})),l.on("click",".carousel_slider__move_up",(function(t){t.preventDefault(),e.ajax({url:ajaxurl,method:"POST",data:{action:"add_content_slide",task:"move-slide-up",post_id:e(this).data("post-id"),slide_pos:e(this).data("slide-pos")},success:function(){window.location.reload(!0)}})})),l.on("click",".carousel_slider__move_down",(function(t){t.preventDefault(),e.ajax({url:ajaxurl,method:"POST",data:{action:"add_content_slide",task:"move-slide-down",post_id:e(this).data("post-id"),slide_pos:e(this).data("slide-pos")},success:function(){window.location.reload(!0)}})})),l.on("click",".carousel_slider__move_bottom",(function(t){t.preventDefault(),e.ajax({url:ajaxurl,method:"POST",data:{action:"add_content_slide",task:"move-slide-bottom",post_id:e(this).data("post-id"),slide_pos:e(this).data("slide-pos")},success:function(){window.location.reload(!0)}})})),l.on("click",".slide_image_add",(function(n){n.preventDefault();var l=e(this);i=l.closest(".slide_bg_wrapper"),s=i.find(".content_slide_canvas"),o=i.find(".background_image_id"),a=i.find(".delete-bg-img"),t||(t=wp.media({title:l.data("title"),button:{text:l.data("button-text")},multiple:!1})).on("select",(function(){var e=t.state().get("selection").first().toJSON();s.css("background-image","url("+e.url+")"),o.val(e.id),a.removeClass("hidden")})),t.open()})),l.on("click",".delete-bg-img",(function(t){t.preventDefault(),i=e(this).closest(".slide_bg_wrapper"),s=i.find(".content_slide_canvas"),o=i.find(".background_image_id"),a=i.find(".delete-bg-img"),s.css("background-image",""),o.val("0"),a.addClass("hidden")})),l.on("change",".background_image_position",(function(){var t=e(this).val();i=e(this).closest(".slide_bg_wrapper"),(s=i.find(".content_slide_canvas")).css("background-position",t)})),l.on("change",".background_image_size",(function(){var t=e(this).val();i=e(this).closest(".slide_bg_wrapper"),(s=i.find(".content_slide_canvas")).css("background-size",t)})),e(".addContentButton").on("click",(function(t){t.preventDefault();var i=(n=e(this).closest(".button_config")).find(".button_text").val(),o=n.find(".button_url").val(),s=n.find(".button_target").val(),a=n.find(".button_type").val(),l=n.find(".button_size").val(),c=n.find(".button_color").val();d.find("#_button_text").val(i),d.find("#_button_url").val(o),d.find("#_button_target").val(s),d.find("#_button_type").val(a),d.find("#_button_size").val(l),d.find("#_button_color").val(c),d.addClass("is-active")})),e("#saveContentButton").on("click",(function(e){if(e.preventDefault(),!n)return d.removeClass("is-active"),!1;var t=d.find("#_button_text").val(),i=d.find("#_button_url").val(),o=d.find("#_button_target").val(),s=d.find("#_button_type").val(),a=d.find("#_button_size").val(),l=d.find("#_button_color").val();n.find(".button_text").val(t),n.find(".button_url").val(i),n.find(".button_target").val(o),n.find(".button_type").val(s),n.find(".button_size").val(a),n.find(".button_color").val(l),d.removeClass("is-active")})),e(".slide-color-picker").each((function(){i=e(this).closest(".slide_bg_wrapper"),s=i.find(".content_slide_canvas"),e(this).wpColorPicker({palettes:["#2196F3","#009688","#4CAF50","#F44336","#FFEB3B","#00D1B2","#000000","#ffffff"],change:function(e,t){s.css("background-color",t.color.toString())}})})),e(document).on("change",".link_type",(function(t){var i=e(this),o=i.val(),s=i.closest(".tab-content-link"),a=s.find(".ContentCarouselLinkFull"),n=s.find(".ContentCarouselLinkButtons");"full"===o?(n.hide(),a.show()):"button"===o?(a.hide(),n.show()):(a.hide(),n.hide())}))}(jQuery),function(e){"use strict";var t,i=e("#carousel_slider_gallery_btn"),o=s(i.data("ids"));function s(e){if(e){var t=new wp.shortcode({tag:"gallery",attrs:{ids:e},type:"single"}),i=wp.media.gallery.attachments(t),o=new wp.media.model.Selection(i.models,{props:i.props.toJSON(),multiple:!0});return o.gallery=i.gallery,o.more().done((function(){o.props.set({query:!1}),o.unmirror(),o.props.unset("orderby")})),o}return!1}i.on("click",(function(a){a.preventDefault();var n={title:i.data("create"),state:"gallery-edit",frame:"post",selection:o};function l(){t.toolbar.get("view").set({insert:{style:"primary",text:i.data("save"),click:function(){var a=t.state().get("library"),n="";a.each((function(e){n+=e.id+","})),this.el.innerHTML=i.data("progress"),e.ajax({type:"POST",url:ajaxurl,data:{ids:n,action:"carousel_slider_save_images",post_id:i.data("id")},success:function(){o=s(n),e("#_carousel_slider_images_ids").val(n),t.close()},dataType:"html"}).done((function(t){e(".carousel_slider_gallery_list").html(t)}))}}})}(t||o)&&(n.title=i.data("edit")),(t=wp.media(n).open()).menu.get("view").unset("cancel"),t.menu.get("view").unset("separateCancel"),t.menu.get("view").get("gallery-edit").el.innerHTML=i.data("edit"),t.content.get("view").sidebar.unset("gallery"),l(),t.on("toolbar:render:gallery-edit",(function(){l()})),t.on("content:render:browse",(function(e){e&&(e.sidebar.on("ready",(function(){e.sidebar.unset("gallery")})),e.toolbar.on("ready",(function(){"gallery-library"===e.toolbar.controller._state&&e.toolbar.$el.hide()})))})),t.state().get("library").on("remove",(function(){0===t.state().get("library").length&&(o=!1,e.post(ajaxurl,{ids:"",action:"carousel_slider_save_images",post_id:i.data("id")}))}))}))}(jQuery),function(e){"use strict";var t=e("body"),i=e("#CarouselSliderModal"),o=e("#_images_urls_btn"),s=e("#carouselSliderGalleryUrlTemplate").html();o.on("click",(function(t){t.preventDefault(),i.css("display","block"),e("body").addClass("overflowHidden")})),i.on("click",".carousel_slider-close",(function(t){t.preventDefault(),i.css("display","none"),e("body").removeClass("overflowHidden")}));var a=e(window).height()-148;e(".carousel_slider-modal-body").css("height",a+"px"),t.on("click",".add_row",(function(){e(this).closest(".carousel_slider-fields").after(s)})),t.on("click",".delete_row",(function(){e(this).closest(".carousel_slider-fields").remove()})),e("#carousel_slider_form").sortable()}(jQuery),function(e){"use strict";e(document).on("click",'[data-toggle="modal"]',(function(t){t.preventDefault(),e(e(this).data("target")).addClass("is-active")})),e(document).on("click",'[data-dismiss="modal"]',(function(t){t.preventDefault(),e(this).closest(".modal").removeClass("is-active")}))}(jQuery),function(e){"use strict";var t=e("#_carousel_slider_slide_type"),i=e("#section_images_settings"),o=e("#section_url_images_settings"),s=e("#section_images_general_settings"),a=e("#section_post_query"),n=e("#section_video_settings"),l=e("#section_product_query"),d=e("#section_content_carousel"),c=e("#_post_query_type"),r=e("#field-_post_date_after"),u=e("#field-_post_date_before"),_=e("#field-_post_categories"),f=e("#field-_post_tags"),p=e("#field-_post_in"),h=e("#field-_posts_per_page"),v=e("#_product_query_type"),g=e("#field-_product_query"),b=e("#field-_product_categories"),m=e("#field-_product_tags"),w=e("#field-_product_in"),y=e("#field-_products_per_page");if(t.on("change",(function(){i.hide("fast"),o.hide("fast"),s.hide("fast"),a.hide("fast"),n.hide("fast"),l.hide("fast"),d.hide("fast"),"image-carousel"===this.value&&(i.slideDown(),s.slideDown()),"image-carousel-url"===this.value&&(o.slideDown(),s.slideDown()),"post-carousel"===this.value&&a.slideDown(),"video-carousel"===this.value&&n.slideDown(),"product-carousel"===this.value&&(l.slideDown(),g.show()),"hero-banner-slider"===this.value&&d.slideDown()})),"post-carousel"===t.val()){var k=c.val();"date_range"===k&&(r.show(),u.show()),"post_categories"===k&&_.show(),"post_tags"===k&&f.show(),"specific_posts"===k&&(p.show(),h.hide())}if(c.on("change",(function(){r.hide("fast"),u.hide("fast"),_.hide("fast"),f.hide("fast"),p.hide("fast"),h.show("fast"),"date_range"===this.value&&(r.slideDown(),u.slideDown()),"post_categories"===this.value&&_.slideDown(),"post_tags"===this.value&&f.slideDown(),"specific_posts"===this.value&&(p.slideDown(),h.hide("fast"))})),"product-carousel"===t.val()){var D=v.val();"query_porduct"===D&&g.show(),"product_categories"===D&&b.show(),"product_tags"===D&&m.show(),"specific_products"===D&&w.show()}v.on("change",(function(){g.hide("fast"),b.hide("fast"),m.hide("fast"),w.hide("fast"),y.show("fast"),"query_porduct"===this.value&&g.slideDown(),"product_categories"===this.value&&b.slideDown(),"product_tags"===this.value&&m.slideDown(),"specific_products"===this.value&&(w.slideDown(),y.hide("fast"))}))}(jQuery),function(e){"use strict";e(".cs-tooltip").each((function(){e(this).tipTip()})),e("select.select2").each((function(){e(this).select2()})),e(".shapla-toggle").each((function(){"closed"===e(this).attr("data-id")?e(this).accordion({collapsible:!0,heightStyle:"content",active:!1}):e(this).accordion({collapsible:!0,heightStyle:"content"})})),e(".shapla-tabs").tabs({hide:{effect:"fadeOut",duration:200},show:{effect:"fadeIn",duration:200}}),e(".datepicker").each((function(){e(this).datepicker({dateFormat:"MM dd, yy",changeMonth:!0,changeYear:!0,onClose:function(t){e(this).datepicker("option","minDate",t)}})})),e(".color-picker").each((function(){e(this).wpColorPicker({palettes:["#2196F3","#009688","#4CAF50","#F44336","#FFEB3B","#00D1B2","#000000","#ffffff"]})}))}(jQuery);
1
+ (()=>{"use strict";class t{constructor(t){this.element=t,this.cssClasses={IS_ACTIVE:"is-active",MAIN:"shapla-tooltip",BOTTOM:"shapla-tooltip--bottom",LEFT:"shapla-tooltip--left",RIGHT:"shapla-tooltip--right",TOP:"shapla-tooltip--top"},this.init()}handleMouseEnter_(t){let e=t.target.getBoundingClientRect(),s=e.left+e.width/2,i=e.top+e.height/2,o=this.element.offsetWidth/2*-1,a=this.element.offsetHeight/2*-1;this.element.classList.contains(this.cssClasses.LEFT)||this.element.classList.contains(this.cssClasses.RIGHT)?i+a<0?(this.element.style.top="0",this.element.style.marginTop="0"):(this.element.style.top=i+"px",this.element.style.marginTop=a+"px"):s+o<0?(this.element.style.left="0",this.element.style.marginLeft="0"):(this.element.style.left=s+"px",this.element.style.marginLeft=o+"px"),this.element.classList.contains(this.cssClasses.TOP)?this.element.style.top=e.top-this.element.offsetHeight-10+"px":this.element.classList.contains(this.cssClasses.RIGHT)?this.element.style.left=e.left+e.width+10+"px":this.element.classList.contains(this.cssClasses.LEFT)?this.element.style.left=e.left-this.element.offsetWidth-10+"px":this.element.style.top=e.top+e.height+10+"px",this.element.classList.add(this.cssClasses.IS_ACTIVE)}hideTooltip_(){this.element.classList.remove(this.cssClasses.IS_ACTIVE)}init(){if(!this.element)return;let e=this.element.getAttribute("data-tooltip-for");if(e)this.forElement_=document.getElementById(e);else{let e=this.element.getAttribute("data-tooltip")||this.element.getAttribute("title"),s=t.createUUID(),i=document.createElement("div");i.classList.add(this.cssClasses.MAIN),i.setAttribute("data-tooltip-for",s),i.setAttribute("role","tooltip"),i.innerText=e,document.body.appendChild(i),this.forElement_=this.element,this.forElement_.setAttribute("data-tooltip-target",s),this.forElement_.removeAttribute("data-tooltip"),this.forElement_.removeAttribute("title"),this.element=i}this.forElement_&&(this.forElement_.hasAttribute("tabindex")||this.forElement_.setAttribute("tabindex","0"),this.boundMouseEnterHandler=this.handleMouseEnter_.bind(this),this.boundMouseLeaveAndScrollHandler=this.hideTooltip_.bind(this),this.forElement_.addEventListener("mouseenter",this.boundMouseEnterHandler,!1),this.forElement_.addEventListener("touchend",this.boundMouseEnterHandler,!1),this.forElement_.addEventListener("mouseleave",this.boundMouseLeaveAndScrollHandler,!1),window.addEventListener("scroll",this.boundMouseLeaveAndScrollHandler,!0),window.addEventListener("touchstart",this.boundMouseLeaveAndScrollHandler))}static createUUID(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(t=>{const e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)}))}static register(){let e=document.querySelectorAll("[data-tooltip-for], [data-tooltip]");e.length&&e.forEach((e=>new t(e)))}}const e=t;let s=document.querySelectorAll(".cs-tooltip");s.length&&s.forEach((t=>new e(t)))})(),function(t){"use strict";t(document).on("click",".accordion-header",(function(){t(this).toggleClass("active");var e=t(this).next();parseInt(e.css("max-height"))>0?(e.css("max-height","0"),e.css("overflow","hidden")):(e.css("max-height",e.prop("scrollHeight")+"px"),e.css("overflow","visible"))}))}(jQuery),function(t){"use strict";var e,s,i,o,a,n,l=t("body"),d=t("#contentButtonModal");l.on("click",".carousel-slider__add-slide",(function(e){e.preventDefault(),t.ajax({url:ajaxurl,method:"POST",data:{action:"add_content_slide",task:"add-slide",post_id:t(this).data("post-id")},success:function(){window.location.reload(!0)}})})),l.on("click",".carousel_slider__delete_slide",(function(e){e.preventDefault(),t.ajax({url:ajaxurl,method:"POST",data:{action:"add_content_slide",task:"delete-slide",post_id:t(this).data("post-id"),slide_pos:t(this).data("slide-pos")},success:function(){window.location.reload(!0)}})})),l.on("click",".carousel_slider__move_top",(function(e){e.preventDefault(),t.ajax({url:ajaxurl,method:"POST",data:{action:"add_content_slide",task:"move-slide-top",post_id:t(this).data("post-id"),slide_pos:t(this).data("slide-pos")},success:function(){window.location.reload(!0)}})})),l.on("click",".carousel_slider__move_up",(function(e){e.preventDefault(),t.ajax({url:ajaxurl,method:"POST",data:{action:"add_content_slide",task:"move-slide-up",post_id:t(this).data("post-id"),slide_pos:t(this).data("slide-pos")},success:function(){window.location.reload(!0)}})})),l.on("click",".carousel_slider__move_down",(function(e){e.preventDefault(),t.ajax({url:ajaxurl,method:"POST",data:{action:"add_content_slide",task:"move-slide-down",post_id:t(this).data("post-id"),slide_pos:t(this).data("slide-pos")},success:function(){window.location.reload(!0)}})})),l.on("click",".carousel_slider__move_bottom",(function(e){e.preventDefault(),t.ajax({url:ajaxurl,method:"POST",data:{action:"add_content_slide",task:"move-slide-bottom",post_id:t(this).data("post-id"),slide_pos:t(this).data("slide-pos")},success:function(){window.location.reload(!0)}})})),l.on("click",".slide_image_add",(function(n){n.preventDefault();var l=t(this);s=l.closest(".slide_bg_wrapper"),o=s.find(".content_slide_canvas"),i=s.find(".background_image_id"),a=s.find(".delete-bg-img"),e||(e=wp.media({title:l.data("title"),button:{text:l.data("button-text")},multiple:!1})).on("select",(function(){var t=e.state().get("selection").first().toJSON();o.css("background-image","url("+t.url+")"),i.val(t.id),a.removeClass("hidden")})),e.open()})),l.on("click",".delete-bg-img",(function(e){e.preventDefault(),s=t(this).closest(".slide_bg_wrapper"),o=s.find(".content_slide_canvas"),i=s.find(".background_image_id"),a=s.find(".delete-bg-img"),o.css("background-image",""),i.val("0"),a.addClass("hidden")})),l.on("change",".background_image_position",(function(){var e=t(this).val();s=t(this).closest(".slide_bg_wrapper"),(o=s.find(".content_slide_canvas")).css("background-position",e)})),l.on("change",".background_image_size",(function(){var e=t(this).val();s=t(this).closest(".slide_bg_wrapper"),(o=s.find(".content_slide_canvas")).css("background-size",e)})),t(".addContentButton").on("click",(function(e){e.preventDefault();var s=(n=t(this).closest(".button_config")).find(".button_text").val(),i=n.find(".button_url").val(),o=n.find(".button_target").val(),a=n.find(".button_type").val(),l=n.find(".button_size").val(),r=n.find(".button_color").val();d.find("#_button_text").val(s),d.find("#_button_url").val(i),d.find("#_button_target").val(o),d.find("#_button_type").val(a),d.find("#_button_size").val(l),d.find("#_button_color").val(r),d.addClass("is-active")})),t("#saveContentButton").on("click",(function(t){if(t.preventDefault(),!n)return d.removeClass("is-active"),!1;var e=d.find("#_button_text").val(),s=d.find("#_button_url").val(),i=d.find("#_button_target").val(),o=d.find("#_button_type").val(),a=d.find("#_button_size").val(),l=d.find("#_button_color").val();n.find(".button_text").val(e),n.find(".button_url").val(s),n.find(".button_target").val(i),n.find(".button_type").val(o),n.find(".button_size").val(a),n.find(".button_color").val(l),d.removeClass("is-active")})),t(".slide-color-picker").each((function(){s=t(this).closest(".slide_bg_wrapper"),o=s.find(".content_slide_canvas"),t(this).wpColorPicker({palettes:["#2196F3","#009688","#4CAF50","#F44336","#FFEB3B","#00D1B2","#000000","#ffffff"],change:function(t,e){o.css("background-color",e.color.toString())}})})),t(document).on("change",".link_type",(function(e){var s=t(this),i=s.val(),o=s.closest(".tab-content-link"),a=o.find(".ContentCarouselLinkFull"),n=o.find(".ContentCarouselLinkButtons");"full"===i?(n.hide(),a.show()):"button"===i?(a.hide(),n.show()):(a.hide(),n.hide())}))}(jQuery),function(t){"use strict";var e,s=t("#carousel_slider_gallery_btn"),i=o(s.data("ids"));function o(t){if(t){var e=new wp.shortcode({tag:"gallery",attrs:{ids:t},type:"single"}),s=wp.media.gallery.attachments(e),i=new wp.media.model.Selection(s.models,{props:s.props.toJSON(),multiple:!0});return i.gallery=s.gallery,i.more().done((function(){i.props.set({query:!1}),i.unmirror(),i.props.unset("orderby")})),i}return!1}s.on("click",(function(a){a.preventDefault();var n={title:s.data("create"),state:"gallery-edit",frame:"post",selection:i};function l(){e.toolbar.get("view").set({insert:{style:"primary",text:s.data("save"),click:function(){var a=e.state().get("library"),n="";a.each((function(t){n+=t.id+","})),this.el.innerHTML=s.data("progress"),t.ajax({type:"POST",url:ajaxurl,data:{ids:n,action:"carousel_slider_save_images",post_id:s.data("id")},success:function(){i=o(n),t("#_carousel_slider_images_ids").val(n),e.close()},dataType:"html"}).done((function(e){t(".carousel_slider_gallery_list").html(e)}))}}})}(e||i)&&(n.title=s.data("edit")),(e=wp.media(n).open()).menu.get("view").unset("cancel"),e.menu.get("view").unset("separateCancel"),e.menu.get("view").get("gallery-edit").el.innerHTML=s.data("edit"),e.content.get("view").sidebar.unset("gallery"),l(),e.on("toolbar:render:gallery-edit",(function(){l()})),e.on("content:render:browse",(function(t){t&&(t.sidebar.on("ready",(function(){t.sidebar.unset("gallery")})),t.toolbar.on("ready",(function(){"gallery-library"===t.toolbar.controller._state&&t.toolbar.$el.hide()})))})),e.state().get("library").on("remove",(function(){0===e.state().get("library").length&&(i=!1,t.post(ajaxurl,{ids:"",action:"carousel_slider_save_images",post_id:s.data("id")}))}))}))}(jQuery),function(t){"use strict";var e=t("body"),s=t("#CarouselSliderModal"),i=t("#_images_urls_btn"),o=t("#carouselSliderGalleryUrlTemplate").html();i.on("click",(function(e){e.preventDefault(),s.css("display","block"),t("body").addClass("overflowHidden")})),s.on("click",".carousel_slider-close",(function(e){e.preventDefault(),s.css("display","none"),t("body").removeClass("overflowHidden")}));var a=t(window).height()-148;t(".carousel_slider-modal-body").css("height",a+"px"),e.on("click",".add_row",(function(){t(this).closest(".carousel_slider-fields").after(o)})),e.on("click",".delete_row",(function(){t(this).closest(".carousel_slider-fields").remove()})),t("#carousel_slider_form").sortable()}(jQuery),function(t){"use strict";t(document).on("click",'[data-toggle="modal"]',(function(e){e.preventDefault(),t(t(this).data("target")).addClass("is-active")})),t(document).on("click",'[data-dismiss="modal"]',(function(e){e.preventDefault(),t(this).closest(".modal").removeClass("is-active")}))}(jQuery),function(t){"use strict";var e=t("#_carousel_slider_slide_type"),s=t("#section_images_settings"),i=t("#section_url_images_settings"),o=t("#section_images_general_settings"),a=t("#section_post_query"),n=t("#section_video_settings"),l=t("#section_product_query"),d=t("#section_content_carousel"),r=t("#_post_query_type"),c=t("#field-_post_date_after"),u=t("#field-_post_date_before"),h=t("#field-_post_categories"),_=t("#field-_post_tags"),f=t("#field-_post_in"),p=t("#field-_posts_per_page"),v=t("#_product_query_type"),m=t("#field-_product_query"),g=t("#field-_product_categories"),b=t("#field-_product_tags"),w=t("#field-_product_in"),y=t("#field-_products_per_page");if(e.on("change",(function(){s.hide("fast"),i.hide("fast"),o.hide("fast"),a.hide("fast"),n.hide("fast"),l.hide("fast"),d.hide("fast"),"image-carousel"===this.value&&(s.slideDown(),o.slideDown()),"image-carousel-url"===this.value&&(i.slideDown(),o.slideDown()),"post-carousel"===this.value&&a.slideDown(),"video-carousel"===this.value&&n.slideDown(),"product-carousel"===this.value&&(l.slideDown(),m.show()),"hero-banner-slider"===this.value&&d.slideDown()})),"post-carousel"===e.val()){var x=r.val();"date_range"===x&&(c.show(),u.show()),"post_categories"===x&&h.show(),"post_tags"===x&&_.show(),"specific_posts"===x&&(f.show(),p.hide())}if(r.on("change",(function(){c.hide("fast"),u.hide("fast"),h.hide("fast"),_.hide("fast"),f.hide("fast"),p.show("fast"),"date_range"===this.value&&(c.slideDown(),u.slideDown()),"post_categories"===this.value&&h.slideDown(),"post_tags"===this.value&&_.slideDown(),"specific_posts"===this.value&&(f.slideDown(),p.hide("fast"))})),"product-carousel"===e.val()){var k=v.val();"query_porduct"===k&&m.show(),"product_categories"===k&&g.show(),"product_tags"===k&&b.show(),"specific_products"===k&&w.show()}v.on("change",(function(){m.hide("fast"),g.hide("fast"),b.hide("fast"),w.hide("fast"),y.show("fast"),"query_porduct"===this.value&&m.slideDown(),"product_categories"===this.value&&g.slideDown(),"product_tags"===this.value&&b.slideDown(),"specific_products"===this.value&&(w.slideDown(),y.hide("fast"))}))}(jQuery),function(t){"use strict";t(".cs-tooltip").each((function(){})),t("select.select2").each((function(){t(this).select2()})),t(".shapla-toggle").each((function(){"closed"===t(this).attr("data-id")?t(this).accordion({collapsible:!0,heightStyle:"content",active:!1}):t(this).accordion({collapsible:!0,heightStyle:"content"})})),t(".shapla-tabs").tabs({hide:{effect:"fadeOut",duration:200},show:{effect:"fadeIn",duration:200}}),t(".datepicker").each((function(){t(this).datepicker({dateFormat:"MM dd, yy",changeMonth:!0,changeYear:!0,onClose:function(e){t(this).datepicker("option","minDate",e)}})})),t(".color-picker").each((function(){t(this).wpColorPicker({palettes:["#2196F3","#009688","#4CAF50","#F44336","#FFEB3B","#00D1B2","#000000","#ffffff"]})}))}(jQuery);
assets/lib/jquery-tiptip/jquery.tipTip.js DELETED
@@ -1,191 +0,0 @@
1
- /*
2
- * TipTip
3
- * Copyright 2010 Drew Wilson
4
- * www.drewwilson.com
5
- * code.drewwilson.com/entry/tiptip-jquery-plugin
6
- *
7
- * Version 1.3 - Updated: Mar. 23, 2010
8
- *
9
- * This Plug-In will create a custom tooltip to replace the default
10
- * browser tooltip. It is extremely lightweight and very smart in
11
- * that it detects the edges of the browser window and will make sure
12
- * the tooltip stays within the current window size. As a result the
13
- * tooltip will adjust itself to be displayed above, below, to the left
14
- * or to the right depending on what is necessary to stay within the
15
- * browser window. It is completely customizable as well via CSS.
16
- *
17
- * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses:
18
- * http://www.opensource.org/licenses/mit-license.php
19
- * http://www.gnu.org/licenses/gpl.html
20
- */
21
-
22
- (function($){
23
- $.fn.tipTip = function(options) {
24
- var defaults = {
25
- activation: "hover",
26
- keepAlive: false,
27
- maxWidth: "200px",
28
- edgeOffset: 3,
29
- defaultPosition: "bottom",
30
- delay: 400,
31
- fadeIn: 200,
32
- fadeOut: 200,
33
- attribute: "title",
34
- content: false, // HTML or String to fill TipTIp with
35
- enter: function(){},
36
- exit: function(){}
37
- };
38
- var opts = $.extend(defaults, options);
39
-
40
- // Setup tip tip elements and render them to the DOM
41
- if($("#tiptip_holder").length <= 0){
42
- var tiptip_holder = $('<div id="tiptip_holder" style="max-width:'+ opts.maxWidth +';"></div>');
43
- var tiptip_content = $('<div id="tiptip_content"></div>');
44
- var tiptip_arrow = $('<div id="tiptip_arrow"></div>');
45
- $("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>')));
46
- } else {
47
- var tiptip_holder = $("#tiptip_holder");
48
- var tiptip_content = $("#tiptip_content");
49
- var tiptip_arrow = $("#tiptip_arrow");
50
- }
51
-
52
- return this.each(function(){
53
- var org_elem = $(this);
54
- if(opts.content){
55
- var org_title = opts.content;
56
- } else {
57
- var org_title = org_elem.attr(opts.attribute);
58
- }
59
- if(org_title != ""){
60
- if(!opts.content){
61
- org_elem.removeAttr(opts.attribute); //remove original Attribute
62
- }
63
- var timeout = false;
64
-
65
- if(opts.activation == "hover"){
66
- org_elem.hover(function(){
67
- active_tiptip();
68
- }, function(){
69
- if(!opts.keepAlive){
70
- deactive_tiptip();
71
- }
72
- });
73
- if(opts.keepAlive){
74
- tiptip_holder.hover(function(){}, function(){
75
- deactive_tiptip();
76
- });
77
- }
78
- } else if(opts.activation == "focus"){
79
- org_elem.focus(function(){
80
- active_tiptip();
81
- }).blur(function(){
82
- deactive_tiptip();
83
- });
84
- } else if(opts.activation == "click"){
85
- org_elem.click(function(){
86
- active_tiptip();
87
- return false;
88
- }).hover(function(){},function(){
89
- if(!opts.keepAlive){
90
- deactive_tiptip();
91
- }
92
- });
93
- if(opts.keepAlive){
94
- tiptip_holder.hover(function(){}, function(){
95
- deactive_tiptip();
96
- });
97
- }
98
- }
99
-
100
- function active_tiptip(){
101
- opts.enter.call(this);
102
- tiptip_content.html(org_title);
103
- tiptip_holder.hide().removeAttr("class").css("margin","0");
104
- tiptip_arrow.removeAttr("style");
105
-
106
- var top = parseInt(org_elem.offset()['top']);
107
- var left = parseInt(org_elem.offset()['left']);
108
- var org_width = parseInt(org_elem.outerWidth());
109
- var org_height = parseInt(org_elem.outerHeight());
110
- var tip_w = tiptip_holder.outerWidth();
111
- var tip_h = tiptip_holder.outerHeight();
112
- var w_compare = Math.round((org_width - tip_w) / 2);
113
- var h_compare = Math.round((org_height - tip_h) / 2);
114
- var marg_left = Math.round(left + w_compare);
115
- var marg_top = Math.round(top + org_height + opts.edgeOffset);
116
- var t_class = "";
117
- var arrow_top = "";
118
- var arrow_left = Math.round(tip_w - 12) / 2;
119
-
120
- if(opts.defaultPosition == "bottom"){
121
- t_class = "_bottom";
122
- } else if(opts.defaultPosition == "top"){
123
- t_class = "_top";
124
- } else if(opts.defaultPosition == "left"){
125
- t_class = "_left";
126
- } else if(opts.defaultPosition == "right"){
127
- t_class = "_right";
128
- }
129
-
130
- var right_compare = (w_compare + left) < parseInt($(window).scrollLeft());
131
- var left_compare = (tip_w + left) > parseInt($(window).width());
132
-
133
- if((right_compare && w_compare < 0) || (t_class == "_right" && !left_compare) || (t_class == "_left" && left < (tip_w + opts.edgeOffset + 5))){
134
- t_class = "_right";
135
- arrow_top = Math.round(tip_h - 13) / 2;
136
- arrow_left = -12;
137
- marg_left = Math.round(left + org_width + opts.edgeOffset);
138
- marg_top = Math.round(top + h_compare);
139
- } else if((left_compare && w_compare < 0) || (t_class == "_left" && !right_compare)){
140
- t_class = "_left";
141
- arrow_top = Math.round(tip_h - 13) / 2;
142
- arrow_left = Math.round(tip_w);
143
- marg_left = Math.round(left - (tip_w + opts.edgeOffset + 5));
144
- marg_top = Math.round(top + h_compare);
145
- }
146
-
147
- var top_compare = (top + org_height + opts.edgeOffset + tip_h + 8) > parseInt($(window).height() + $(window).scrollTop());
148
- var bottom_compare = ((top + org_height) - (opts.edgeOffset + tip_h + 8)) < 0;
149
-
150
- if(top_compare || (t_class == "_bottom" && top_compare) || (t_class == "_top" && !bottom_compare)){
151
- if(t_class == "_top" || t_class == "_bottom"){
152
- t_class = "_top";
153
- } else {
154
- t_class = t_class+"_top";
155
- }
156
- arrow_top = tip_h;
157
- marg_top = Math.round(top - (tip_h + 5 + opts.edgeOffset));
158
- } else if(bottom_compare | (t_class == "_top" && bottom_compare) || (t_class == "_bottom" && !top_compare)){
159
- if(t_class == "_top" || t_class == "_bottom"){
160
- t_class = "_bottom";
161
- } else {
162
- t_class = t_class+"_bottom";
163
- }
164
- arrow_top = -12;
165
- marg_top = Math.round(top + org_height + opts.edgeOffset);
166
- }
167
-
168
- if(t_class == "_right_top" || t_class == "_left_top"){
169
- marg_top = marg_top + 5;
170
- } else if(t_class == "_right_bottom" || t_class == "_left_bottom"){
171
- marg_top = marg_top - 5;
172
- }
173
- if(t_class == "_left_top" || t_class == "_left_bottom"){
174
- marg_left = marg_left + 5;
175
- }
176
- tiptip_arrow.css({"margin-left": arrow_left+"px", "margin-top": arrow_top+"px"});
177
- tiptip_holder.css({"margin-left": marg_left+"px", "margin-top": marg_top+"px"}).attr("class","tip"+t_class);
178
-
179
- if (timeout){ clearTimeout(timeout); }
180
- timeout = setTimeout(function(){ tiptip_holder.stop(true,true).fadeIn(opts.fadeIn); }, opts.delay);
181
- }
182
-
183
- function deactive_tiptip(){
184
- opts.exit.call(this);
185
- if (timeout){ clearTimeout(timeout); }
186
- tiptip_holder.fadeOut(opts.fadeOut);
187
- }
188
- }
189
- });
190
- }
191
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/lib/jquery-tiptip/jquery.tipTip.min.js DELETED
@@ -1 +0,0 @@
1
- !function(t){t.fn.tipTip=function(e){var o={activation:"hover",keepAlive:!1,maxWidth:"200px",edgeOffset:3,defaultPosition:"bottom",delay:400,fadeIn:200,fadeOut:200,attribute:"title",content:!1,enter:function(){},exit:function(){}},i=t.extend(o,e);if(t("#tiptip_holder").length<=0){var n=t('<div id="tiptip_holder" style="max-width:'+i.maxWidth+';"></div>'),r=t('<div id="tiptip_content"></div>'),a=t('<div id="tiptip_arrow"></div>');t("body").append(n.html(r).prepend(a.html('<div id="tiptip_arrow_inner"></div>')))}else var n=t("#tiptip_holder"),r=t("#tiptip_content"),a=t("#tiptip_arrow");return this.each(function(){function e(){i.enter.call(this),r.html(d),n.hide().removeAttr("class").css("margin","0"),a.removeAttr("style");var e=parseInt(f.offset().top),o=parseInt(f.offset().left),p=parseInt(f.outerWidth()),l=parseInt(f.outerHeight()),h=n.outerWidth(),c=n.outerHeight(),s=Math.round((p-h)/2),_=Math.round((l-c)/2),v=Math.round(o+s),m=Math.round(e+l+i.edgeOffset),g="",b="",M=Math.round(h-12)/2;"bottom"==i.defaultPosition?g="_bottom":"top"==i.defaultPosition?g="_top":"left"==i.defaultPosition?g="_left":"right"==i.defaultPosition&&(g="_right");var w=s+o<parseInt(t(window).scrollLeft()),O=h+o>parseInt(t(window).width());w&&s<0||"_right"==g&&!O||"_left"==g&&o<h+i.edgeOffset+5?(g="_right",b=Math.round(c-13)/2,M=-12,v=Math.round(o+p+i.edgeOffset),m=Math.round(e+_)):(O&&s<0||"_left"==g&&!w)&&(g="_left",b=Math.round(c-13)/2,M=Math.round(h),v=Math.round(o-(h+i.edgeOffset+5)),m=Math.round(e+_));var x=e+l+i.edgeOffset+c+8>parseInt(t(window).height()+t(window).scrollTop()),I=e+l-(i.edgeOffset+c+8)<0;x||"_bottom"==g&&x||"_top"==g&&!I?("_top"==g||"_bottom"==g?g="_top":g+="_top",b=c,m=Math.round(e-(c+5+i.edgeOffset))):(I|("_top"==g&&I)||"_bottom"==g&&!x)&&("_top"==g||"_bottom"==g?g="_bottom":g+="_bottom",b=-12,m=Math.round(e+l+i.edgeOffset)),"_right_top"==g||"_left_top"==g?m+=5:"_right_bottom"!=g&&"_left_bottom"!=g||(m-=5),"_left_top"!=g&&"_left_bottom"!=g||(v+=5),a.css({"margin-left":M+"px","margin-top":b+"px"}),n.css({"margin-left":v+"px","margin-top":m+"px"}).attr("class","tip"+g),u&&clearTimeout(u),u=setTimeout(function(){n.stop(!0,!0).fadeIn(i.fadeIn)},i.delay)}function o(){i.exit.call(this),u&&clearTimeout(u),n.fadeOut(i.fadeOut)}var f=t(this);if(i.content)d=i.content;else var d=f.attr(i.attribute);if(""!=d){i.content||f.removeAttr(i.attribute);var u=!1;"hover"==i.activation?(f.hover(function(){e()},function(){i.keepAlive||o()}),i.keepAlive&&n.hover(function(){},function(){o()})):"focus"==i.activation?f.focus(function(){e()}).blur(function(){o()}):"click"==i.activation&&(f.click(function(){return e(),!1}).hover(function(){},function(){i.keepAlive||o()}),i.keepAlive&&n.hover(function(){},function(){o()}))}})}}(jQuery);
 
assets/src/admin/accordion.js DELETED
@@ -1,15 +0,0 @@
1
- (function ($) {
2
- 'use strict';
3
- $(document).on("click", ".accordion-header", function () {
4
- $(this).toggleClass('active');
5
- var panel = $(this).next();
6
-
7
- if (parseInt(panel.css('max-height')) > 0) {
8
- panel.css('max-height', '0');
9
- panel.css('overflow', 'hidden');
10
- } else {
11
- panel.css('max-height', panel.prop('scrollHeight') + "px");
12
- panel.css('overflow', 'visible');
13
- }
14
- });
15
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/admin/hero-banner.js DELETED
@@ -1,295 +0,0 @@
1
- (function ($) {
2
- "use strict";
3
-
4
- var body = $('body'),
5
- contentButtonModal = $('#contentButtonModal'),
6
- frame,
7
- section,
8
- imgIdInput,
9
- slideCanvas,
10
- delImgLink,
11
- buttonConfig;
12
-
13
- // Add new content slide
14
- body.on('click', '.carousel-slider__add-slide', function (e) {
15
- e.preventDefault();
16
-
17
- $.ajax({
18
- url: ajaxurl,
19
- method: 'POST',
20
- data: {
21
- action: 'add_content_slide',
22
- task: 'add-slide',
23
- post_id: $(this).data('post-id')
24
- },
25
- success: function () {
26
- window.location.reload(true);
27
- }
28
- });
29
- });
30
-
31
- // Delete a slide
32
- body.on('click', '.carousel_slider__delete_slide', function (e) {
33
- e.preventDefault();
34
-
35
- $.ajax({
36
- url: ajaxurl,
37
- method: 'POST',
38
- data: {
39
- action: 'add_content_slide',
40
- task: 'delete-slide',
41
- post_id: $(this).data('post-id'),
42
- slide_pos: $(this).data('slide-pos')
43
- },
44
- success: function () {
45
- window.location.reload(true);
46
- }
47
- });
48
- });
49
-
50
- // Move slide to top
51
- body.on('click', '.carousel_slider__move_top', function (e) {
52
- e.preventDefault();
53
-
54
- $.ajax({
55
- url: ajaxurl,
56
- method: 'POST',
57
- data: {
58
- action: 'add_content_slide',
59
- task: 'move-slide-top',
60
- post_id: $(this).data('post-id'),
61
- slide_pos: $(this).data('slide-pos')
62
- },
63
- success: function () {
64
- window.location.reload(true);
65
- }
66
- });
67
- });
68
-
69
- // Move slide up
70
- body.on('click', '.carousel_slider__move_up', function (e) {
71
- e.preventDefault();
72
-
73
- $.ajax({
74
- url: ajaxurl,
75
- method: 'POST',
76
- data: {
77
- action: 'add_content_slide',
78
- task: 'move-slide-up',
79
- post_id: $(this).data('post-id'),
80
- slide_pos: $(this).data('slide-pos')
81
- },
82
- success: function () {
83
- window.location.reload(true);
84
- }
85
- });
86
- });
87
-
88
- // Move slide down
89
- body.on('click', '.carousel_slider__move_down', function (e) {
90
- e.preventDefault();
91
-
92
- $.ajax({
93
- url: ajaxurl,
94
- method: 'POST',
95
- data: {
96
- action: 'add_content_slide',
97
- task: 'move-slide-down',
98
- post_id: $(this).data('post-id'),
99
- slide_pos: $(this).data('slide-pos')
100
- },
101
- success: function () {
102
- window.location.reload(true);
103
- }
104
- });
105
- });
106
-
107
- // Move slide to bottom
108
- body.on('click', '.carousel_slider__move_bottom', function (e) {
109
- e.preventDefault();
110
-
111
- $.ajax({
112
- url: ajaxurl,
113
- method: 'POST',
114
- data: {
115
- action: 'add_content_slide',
116
- task: 'move-slide-bottom',
117
- post_id: $(this).data('post-id'),
118
- slide_pos: $(this).data('slide-pos')
119
- },
120
- success: function () {
121
- window.location.reload(true);
122
- }
123
- });
124
- });
125
-
126
- // Add slide image
127
- body.on('click', '.slide_image_add', function (e) {
128
- e.preventDefault();
129
-
130
- var _this = $(this);
131
- section = _this.closest('.slide_bg_wrapper');
132
- slideCanvas = section.find('.content_slide_canvas');
133
- imgIdInput = section.find('.background_image_id');
134
- delImgLink = section.find('.delete-bg-img');
135
-
136
- // If the media frame already exists, reopen it.
137
- if (frame) {
138
- frame.open();
139
- return;
140
- }
141
-
142
- // Create a new media frame
143
- frame = wp.media({
144
- title: _this.data('title'),
145
- button: {
146
- text: _this.data('button-text')
147
- },
148
- multiple: false // Set to true to allow multiple files to be selected
149
- });
150
-
151
- // When an image is selected in the media frame...
152
- frame.on('select', function () {
153
-
154
- // Get media attachment details from the frame state
155
- var attachment = frame.state().get('selection').first().toJSON();
156
-
157
- // Send the attachment URL to our custom image input field.
158
- slideCanvas.css('background-image', 'url(' + attachment.url + ')');
159
-
160
- // Send the attachment id to our hidden input
161
- imgIdInput.val(attachment.id);
162
-
163
- // Show the remove image link
164
- delImgLink.removeClass('hidden');
165
- });
166
-
167
- // Finally, open the modal on click
168
- frame.open();
169
- });
170
-
171
- // Remove slide image
172
- body.on('click', '.delete-bg-img', function (e) {
173
- e.preventDefault();
174
-
175
- section = $(this).closest('.slide_bg_wrapper');
176
- slideCanvas = section.find('.content_slide_canvas');
177
- imgIdInput = section.find('.background_image_id');
178
- delImgLink = section.find('.delete-bg-img');
179
-
180
- // Clear out the preview image
181
- slideCanvas.css('background-image', '');
182
-
183
- // Delete the image id from the hidden input
184
- imgIdInput.val('0');
185
-
186
- // Hide the delete image link
187
- delImgLink.addClass('hidden');
188
- });
189
-
190
- // Background Position
191
- body.on('change', '.background_image_position', function () {
192
- var _val = $(this).val();
193
- section = $(this).closest('.slide_bg_wrapper');
194
- slideCanvas = section.find('.content_slide_canvas');
195
- slideCanvas.css('background-position', _val);
196
- });
197
-
198
- // Background Size
199
- body.on('change', '.background_image_size', function () {
200
- var _val = $(this).val();
201
- section = $(this).closest('.slide_bg_wrapper');
202
- slideCanvas = section.find('.content_slide_canvas');
203
- slideCanvas.css('background-size', _val);
204
- });
205
-
206
- // Add Button Style to Modal for Edit
207
- $('.addContentButton').on('click', function (e) {
208
- e.preventDefault();
209
-
210
- buttonConfig = $(this).closest('.button_config');
211
- var button_text = buttonConfig.find('.button_text').val();
212
- var button_url = buttonConfig.find('.button_url').val();
213
- var button_target = buttonConfig.find('.button_target').val();
214
- var button_type = buttonConfig.find('.button_type').val();
215
- var button_size = buttonConfig.find('.button_size').val();
216
- var button_color = buttonConfig.find('.button_color').val();
217
-
218
- contentButtonModal.find('#_button_text').val(button_text);
219
- contentButtonModal.find('#_button_url').val(button_url);
220
- contentButtonModal.find('#_button_target').val(button_target);
221
- contentButtonModal.find('#_button_type').val(button_type);
222
- contentButtonModal.find('#_button_size').val(button_size);
223
- contentButtonModal.find('#_button_color').val(button_color);
224
-
225
- contentButtonModal.addClass('is-active');
226
- });
227
-
228
- // Save Button style from modal form
229
- $('#saveContentButton').on('click', function (e) {
230
- e.preventDefault();
231
-
232
- if (!buttonConfig) {
233
- contentButtonModal.removeClass('is-active');
234
- return false;
235
- }
236
-
237
- var button_text = contentButtonModal.find('#_button_text').val();
238
- var button_url = contentButtonModal.find('#_button_url').val();
239
- var button_target = contentButtonModal.find('#_button_target').val();
240
- var button_type = contentButtonModal.find('#_button_type').val();
241
- var button_size = contentButtonModal.find('#_button_size').val();
242
- var button_color = contentButtonModal.find('#_button_color').val();
243
-
244
- buttonConfig.find('.button_text').val(button_text);
245
- buttonConfig.find('.button_url').val(button_url);
246
- buttonConfig.find('.button_target').val(button_target);
247
- buttonConfig.find('.button_type').val(button_type);
248
- buttonConfig.find('.button_size').val(button_size);
249
- buttonConfig.find('.button_color').val(button_color);
250
-
251
- contentButtonModal.removeClass('is-active');
252
-
253
- });
254
-
255
- // Background Color
256
- $('.slide-color-picker').each(function () {
257
- section = $(this).closest('.slide_bg_wrapper');
258
- slideCanvas = section.find('.content_slide_canvas');
259
- $(this).wpColorPicker({
260
- palettes: [
261
- '#2196F3', // Blue
262
- '#009688', // Teal
263
- '#4CAF50', // Green
264
- '#F44336', // Red
265
- '#FFEB3B', // Yellow
266
- '#00D1B2', // Firoza
267
- '#000000', // Blank
268
- '#ffffff' // White
269
- ],
270
- change: function (event, ui) {
271
- slideCanvas.css('background-color', ui.color.toString());
272
- }
273
- });
274
- });
275
-
276
- // Slide Link
277
- $(document).on('change', '.link_type', function (e) {
278
- var _this = $(this);
279
- var _val = _this.val();
280
- var _tab = _this.closest('.tab-content-link');
281
- var _linkFull = _tab.find('.ContentCarouselLinkFull');
282
- var _linkBtn = _tab.find('.ContentCarouselLinkButtons');
283
- if (_val === 'full') {
284
- _linkBtn.hide();
285
- _linkFull.show();
286
- } else if (_val === 'button') {
287
- _linkFull.hide();
288
- _linkBtn.show();
289
- } else {
290
- _linkFull.hide();
291
- _linkBtn.hide();
292
- }
293
- })
294
-
295
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/admin/media-gallery.js DELETED
@@ -1,131 +0,0 @@
1
- (function ($) {
2
- "use strict";
3
-
4
- var frame,
5
- _this = $('#carousel_slider_gallery_btn'),
6
- images = _this.data('ids'),
7
- selection = loadImages(images);
8
-
9
- _this.on('click', function (e) {
10
- e.preventDefault();
11
- var options = {
12
- title: _this.data('create'),
13
- state: 'gallery-edit',
14
- frame: 'post',
15
- selection: selection
16
- };
17
-
18
- if (frame || selection) {
19
- options['title'] = _this.data('edit');
20
- }
21
-
22
- frame = wp.media(options).open();
23
-
24
- // Tweak Views
25
- frame.menu.get('view').unset('cancel');
26
- frame.menu.get('view').unset('separateCancel');
27
- frame.menu.get('view').get('gallery-edit').el.innerHTML = _this.data('edit');
28
- frame.content.get('view').sidebar.unset('gallery'); // Hide Gallery Settings in sidebar
29
-
30
- // when editing a gallery
31
- overrideGalleryInsert();
32
- frame.on('toolbar:render:gallery-edit', function () {
33
- overrideGalleryInsert();
34
- });
35
-
36
- frame.on('content:render:browse', function (browser) {
37
- if (!browser) return;
38
- // Hide Gallery Settings in sidebar
39
- browser.sidebar.on('ready', function () {
40
- browser.sidebar.unset('gallery');
41
- });
42
- // Hide filter/search as they don't work
43
- browser.toolbar.on('ready', function () {
44
- if (browser.toolbar.controller._state === 'gallery-library') {
45
- browser.toolbar.$el.hide();
46
- }
47
- });
48
- });
49
-
50
- // All images removed
51
- frame.state().get('library').on('remove', function () {
52
- var models = frame.state().get('library');
53
- if (models.length === 0) {
54
- selection = false;
55
- $.post(ajaxurl, {
56
- ids: '',
57
- action: 'carousel_slider_save_images',
58
- post_id: _this.data('id')
59
- });
60
- }
61
- });
62
-
63
- function overrideGalleryInsert() {
64
- frame.toolbar.get('view').set({
65
- insert: {
66
- style: 'primary',
67
- text: _this.data('save'),
68
- click: function () {
69
- var models = frame.state().get('library'),
70
- ids = '';
71
-
72
- models.each(function (attachment) {
73
- ids += attachment.id + ','
74
- });
75
-
76
- this.el.innerHTML = _this.data('progress');
77
-
78
- $.ajax({
79
- type: 'POST',
80
- url: ajaxurl,
81
- data: {
82
- ids: ids,
83
- action: 'carousel_slider_save_images',
84
- post_id: _this.data('id')
85
- },
86
- success: function () {
87
- selection = loadImages(ids);
88
- $('#_carousel_slider_images_ids').val(ids);
89
- frame.close();
90
- },
91
- dataType: 'html'
92
- }).done(function (data) {
93
- $('.carousel_slider_gallery_list').html(data);
94
- });
95
- }
96
- }
97
- });
98
- }
99
-
100
- });
101
-
102
- function loadImages(images) {
103
- if (images) {
104
- var shortcode = new wp.shortcode({
105
- tag: 'gallery',
106
- attrs: {ids: images},
107
- type: 'single'
108
- });
109
-
110
- var attachments = wp.media.gallery.attachments(shortcode);
111
-
112
- var selection = new wp.media.model.Selection(attachments.models, {
113
- props: attachments.props.toJSON(),
114
- multiple: true
115
- });
116
-
117
- selection.gallery = attachments.gallery;
118
-
119
- selection.more().done(function () {
120
- // Break ties with the query.
121
- selection.props.set({query: false});
122
- selection.unmirror();
123
- selection.props.unset('orderby');
124
- });
125
-
126
- return selection;
127
- }
128
- return false;
129
- }
130
-
131
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/admin/media-url.js DELETED
@@ -1,40 +0,0 @@
1
- /**
2
- * Carousel Slider Gallery from URL
3
- */
4
- (function ($) {
5
- 'use strict';
6
-
7
- var body = $('body'),
8
- modal = $('#CarouselSliderModal'),
9
- modalOpenBtn = $('#_images_urls_btn'),
10
- template = $('#carouselSliderGalleryUrlTemplate').html();
11
-
12
- // URL Images Model
13
- modalOpenBtn.on('click', function (e) {
14
- e.preventDefault();
15
- modal.css("display", "block");
16
- $("body").addClass("overflowHidden");
17
- });
18
- modal.on('click', '.carousel_slider-close', function (e) {
19
- e.preventDefault();
20
- modal.css("display", "none");
21
- $("body").removeClass("overflowHidden");
22
- });
23
-
24
- var carouselSliderBodyHeight = $(window).height() - (38 + 48 + 32 + 30);
25
- $('.carousel_slider-modal-body').css('height', carouselSliderBodyHeight + 'px');
26
-
27
- // Append new row
28
- body.on('click', '.add_row', function () {
29
- $(this).closest('.carousel_slider-fields').after(template);
30
- });
31
-
32
- // Delete current row
33
- body.on('click', '.delete_row', function () {
34
- $(this).closest('.carousel_slider-fields').remove();
35
- });
36
-
37
- // Make fields sortable
38
- $('#carousel_slider_form').sortable();
39
-
40
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/admin/modal.js DELETED
@@ -1,16 +0,0 @@
1
- (function ($) {
2
- 'use strict';
3
-
4
- // Open modal
5
- $(document).on('click', '[data-toggle="modal"]', function (e) {
6
- e.preventDefault();
7
- $($(this).data('target')).addClass('is-active');
8
- });
9
-
10
- // Close modal
11
- $(document).on('click', '[data-dismiss="modal"]', function (e) {
12
- e.preventDefault();
13
- $(this).closest('.modal').removeClass('is-active');
14
- });
15
-
16
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/admin/slide-type.js DELETED
@@ -1,144 +0,0 @@
1
- (function ($) {
2
- "use strict";
3
-
4
- var slide_type = $('#_carousel_slider_slide_type'),
5
- section_images_settings = $('#section_images_settings'),
6
- section_url_images_settings = $('#section_url_images_settings'),
7
- section_images_general_settings = $('#section_images_general_settings'),
8
- section_post_query = $('#section_post_query'),
9
- section_video_settings = $('#section_video_settings'),
10
- section_product_query = $('#section_product_query'),
11
- section_content_carousel = $('#section_content_carousel'),
12
- // Slide Type -- Post
13
- _post_query_type = $('#_post_query_type'),
14
- _post_date_after = $('#field-_post_date_after'),
15
- _post_date_before = $('#field-_post_date_before'),
16
- _post_categories = $('#field-_post_categories'),
17
- _post_tags = $('#field-_post_tags'),
18
- _post_in = $('#field-_post_in'),
19
- _posts_per_page = $('#field-_posts_per_page'),
20
- // Slide Type -- Product
21
- _product_query_type = $('#_product_query_type'),
22
- _product_query = $('#field-_product_query'),
23
- _product_categories = $('#field-_product_categories'),
24
- _product_tags = $('#field-_product_tags'),
25
- _product_in = $('#field-_product_in'),
26
- _products_per_page = $('#field-_products_per_page');
27
-
28
- // Slide Type
29
- slide_type.on('change', function () {
30
- section_images_settings.hide('fast');
31
- section_url_images_settings.hide('fast');
32
- section_images_general_settings.hide('fast');
33
- section_post_query.hide('fast');
34
- section_video_settings.hide('fast');
35
- section_product_query.hide('fast');
36
- section_content_carousel.hide('fast');
37
-
38
- if (this.value === 'image-carousel') {
39
- section_images_settings.slideDown();
40
- section_images_general_settings.slideDown();
41
- }
42
- if (this.value === 'image-carousel-url') {
43
- section_url_images_settings.slideDown();
44
- section_images_general_settings.slideDown();
45
- }
46
- if (this.value === 'post-carousel') {
47
- section_post_query.slideDown();
48
- }
49
- if (this.value === 'video-carousel') {
50
- section_video_settings.slideDown();
51
- }
52
- if (this.value === 'product-carousel') {
53
- section_product_query.slideDown();
54
- _product_query.show();
55
- }
56
- if (this.value === 'hero-banner-slider') {
57
- section_content_carousel.slideDown();
58
- }
59
- });
60
-
61
- // Slide Type -- Post Carousel
62
- if (slide_type.val() === 'post-carousel') {
63
- var _postQueryType = _post_query_type.val();
64
- if (_postQueryType === 'date_range') {
65
- _post_date_after.show();
66
- _post_date_before.show();
67
- }
68
- if (_postQueryType === 'post_categories') {
69
- _post_categories.show();
70
- }
71
- if (_postQueryType === 'post_tags') {
72
- _post_tags.show();
73
- }
74
- if (_postQueryType === 'specific_posts') {
75
- _post_in.show();
76
- _posts_per_page.hide();
77
- }
78
- }
79
-
80
- _post_query_type.on('change', function () {
81
-
82
- _post_date_after.hide('fast');
83
- _post_date_before.hide('fast');
84
- _post_categories.hide('fast');
85
- _post_tags.hide('fast');
86
- _post_in.hide('fast');
87
- _posts_per_page.show('fast');
88
-
89
- if (this.value === 'date_range') {
90
- _post_date_after.slideDown();
91
- _post_date_before.slideDown();
92
- }
93
- if (this.value === 'post_categories') {
94
- _post_categories.slideDown();
95
- }
96
- if (this.value === 'post_tags') {
97
- _post_tags.slideDown();
98
- }
99
- if (this.value === 'specific_posts') {
100
- _post_in.slideDown();
101
- _posts_per_page.hide('fast');
102
- }
103
- });
104
-
105
- // Slide Type -- Product Carousel
106
- if (slide_type.val() === 'product-carousel') {
107
- var _productQueryType = _product_query_type.val();
108
- if (_productQueryType === 'query_porduct') {
109
- _product_query.show();
110
- }
111
- if (_productQueryType === 'product_categories') {
112
- _product_categories.show();
113
- }
114
- if (_productQueryType === 'product_tags') {
115
- _product_tags.show();
116
- }
117
- if (_productQueryType === 'specific_products') {
118
- _product_in.show();
119
- }
120
- }
121
-
122
- _product_query_type.on('change', function () {
123
-
124
- _product_query.hide('fast');
125
- _product_categories.hide('fast');
126
- _product_tags.hide('fast');
127
- _product_in.hide('fast');
128
- _products_per_page.show('fast');
129
-
130
- if (this.value === 'query_porduct') {
131
- _product_query.slideDown();
132
- }
133
- if (this.value === 'product_categories') {
134
- _product_categories.slideDown();
135
- }
136
- if (this.value === 'product_tags') {
137
- _product_tags.slideDown();
138
- }
139
- if (this.value === 'specific_products') {
140
- _product_in.slideDown();
141
- _products_per_page.hide('fast');
142
- }
143
- });
144
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/admin/vendors.js DELETED
@@ -1,69 +0,0 @@
1
- (function ($) {
2
- "use strict";
3
-
4
- // Initializing TipTip
5
- $(".cs-tooltip").each(function () {
6
- $(this).tipTip();
7
- });
8
-
9
- // Initializing Select2
10
- $("select.select2").each(function () {
11
- $(this).select2();
12
- });
13
-
14
- // Initializing jQuery UI Accordion
15
- $(".shapla-toggle").each(function () {
16
- if ($(this).attr('data-id') === 'closed') {
17
- $(this).accordion({
18
- collapsible: true,
19
- heightStyle: "content",
20
- active: false
21
- });
22
- } else {
23
- $(this).accordion({
24
- collapsible: true,
25
- heightStyle: "content"
26
- });
27
- }
28
- });
29
-
30
- // Initializing jQuery UI Tab
31
- $(".shapla-tabs").tabs({
32
- hide: {
33
- effect: "fadeOut",
34
- duration: 200
35
- },
36
- show: {
37
- effect: "fadeIn",
38
- duration: 200
39
- }
40
- });
41
-
42
- //Initializing jQuery UI Date picker
43
- $('.datepicker').each(function () {
44
- $(this).datepicker({
45
- dateFormat: 'MM dd, yy',
46
- changeMonth: true,
47
- changeYear: true,
48
- onClose: function (selectedDate) {
49
- $(this).datepicker('option', 'minDate', selectedDate);
50
- }
51
- });
52
- });
53
-
54
- // Initializing WP Color Picker
55
- $('.color-picker').each(function () {
56
- $(this).wpColorPicker({
57
- palettes: [
58
- '#2196F3', // Blue
59
- '#009688', // Teal
60
- '#4CAF50', // Green
61
- '#F44336', // Red
62
- '#FFEB3B', // Yellow
63
- '#00D1B2', // Firoza
64
- '#000000', // Blank
65
- '#ffffff' // White
66
- ]
67
- });
68
- });
69
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/frontend/main.js DELETED
@@ -1,75 +0,0 @@
1
- jQuery('body').find('.carousel-slider').each(function () {
2
- let _this = jQuery(this);
3
- let autoWidth = _this.data('auto-width');
4
- let stagePadding = parseInt(_this.data('stage-padding'));
5
- stagePadding = stagePadding > 0 ? stagePadding : 0;
6
-
7
- if (jQuery().owlCarousel) {
8
- _this.owlCarousel({
9
- stagePadding: stagePadding,
10
- nav: _this.data('nav'),
11
- dots: _this.data('dots'),
12
- margin: _this.data('margin'),
13
- loop: _this.data('loop'),
14
- autoplay: _this.data('autoplay'),
15
- autoplayTimeout: _this.data('autoplay-timeout'),
16
- autoplaySpeed: _this.data('autoplay-speed'),
17
- autoplayHoverPause: _this.data('autoplay-hover-pause'),
18
- slideBy: _this.data('slide-by'),
19
- lazyLoad: _this.data('lazy-load'),
20
- autoWidth: autoWidth,
21
- navText: [
22
- '<svg class="carousel-slider-nav-icon" viewBox="0 0 20 20"><path d="M14 5l-5 5 5 5-1 2-7-7 7-7z"></path></use></svg>',
23
- '<svg class="carousel-slider-nav-icon" viewBox="0 0 20 20"><path d="M6 15l5-5-5-5 1-2 7 7-7 7z"></path></svg>'
24
- ],
25
- responsive: {
26
- 320: {items: _this.data('colums-mobile')},
27
- 600: {items: _this.data('colums-small-tablet')},
28
- 768: {items: _this.data('colums-tablet')},
29
- 993: {items: _this.data('colums-small-desktop')},
30
- 1200: {items: _this.data('colums-desktop')},
31
- 1921: {items: _this.data('colums')}
32
- }
33
- });
34
-
35
- if ('hero-banner-slider' === _this.data('slide-type')) {
36
- let animation = _this.data('animation');
37
- if (animation.length) {
38
- _this.on('change.owl.carousel', function () {
39
- let sliderContent = _this.find('.carousel-slider-hero__cell__content');
40
- sliderContent.removeClass('animated' + ' ' + animation).hide();
41
- });
42
- _this.on('changed.owl.carousel', function (e) {
43
- setTimeout(function () {
44
- let current = jQuery(e.target).find('.carousel-slider-hero__cell__content').eq(e.item.index);
45
- current.show().addClass('animated' + ' ' + animation);
46
- }, _this.data('autoplay-speed'));
47
- });
48
- }
49
- }
50
- }
51
-
52
- if (jQuery().magnificPopup) {
53
- if (_this.data('slide-type') === 'product-carousel') {
54
- jQuery(this).find('.magnific-popup').magnificPopup({
55
- type: 'ajax'
56
- });
57
- } else if ('video-carousel' === _this.data('slide-type')) {
58
- jQuery(this).find('.magnific-popup').magnificPopup({
59
- type: 'iframe'
60
- });
61
- } else {
62
- jQuery(this).find('.magnific-popup').magnificPopup({
63
- type: 'image',
64
- gallery: {
65
- enabled: true
66
- },
67
- zoom: {
68
- enabled: true,
69
- duration: 300,
70
- easing: 'ease-in-out'
71
- }
72
- });
73
- }
74
- }
75
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/gutenberg-block/main.js DELETED
@@ -1,223 +0,0 @@
1
- /**
2
- * Carousel Slider Block
3
- *
4
- * A block for embedding a carousel slider into a post/page.
5
- */
6
- (function (blocks, i18n, editor, element, components) {
7
-
8
- var el = element.createElement, // function to create elements
9
- settings = window.carousel_slider_gutenberg_block,
10
- TextControl = components.TextControl,// text input control
11
- InspectorControls = editor.InspectorControls; // sidebar controls
12
-
13
- // register our block
14
- blocks.registerBlockType('carousel-slider/slider', {
15
- title: settings.block_title,
16
- icon: 'slides',
17
- category: 'common',
18
-
19
- attributes: {
20
- sliderID: {type: 'integer', default: 0},
21
- sliderName: {type: 'string', default: ''}
22
- },
23
-
24
- edit: function (props) {
25
- var sliderID = props.attributes.sliderID,
26
- sliderName = props.attributes.sliderName,
27
- children = [];
28
-
29
- if (!sliderID) sliderID = ''; // Default.
30
- if (!sliderName) sliderName = ''; // Default
31
-
32
- // this function is required, but we don't need it to do anything
33
- function carouselSliderOnValueChange(sliderName) {
34
- }
35
-
36
- // show the dropdown when we click on the input
37
- function carouselSliderFocusClick(event) {
38
- var elementID = event.target.getAttribute('id');
39
- var idArray = elementID.split('-');
40
- var carouselSliderOptions = document.getElementById('carousel-slider-filter-container-' + idArray[idArray.length - 1]);
41
- // get the related input element
42
- var carouselSliderInput = document.getElementById('carousel-slider-sliderFilter-' + idArray[idArray.length - 1]);
43
- // set focus to the element so the onBlur function runs properly
44
- carouselSliderInput.focus();
45
- carouselSliderOptions.style.display = 'block';
46
- }
47
-
48
- // function for select the slider on filter drop down item click
49
- function selectSlider(event) {
50
- //set the attributes from the selected for item
51
- props.setAttributes({
52
- sliderID: parseInt(event.target.getAttribute('data-slider_id')),
53
- sliderName: event.target.innerText
54
- });
55
- /**
56
- * Get the main div of the filter to tell if this is being
57
- * selected from the sidebar or block so we can hide the dropdown
58
- */
59
- var elementID = event.target.parentNode.parentNode;
60
- var idArray = elementID.getAttribute('id').split('-');
61
- var carouselSliderOptions = document.getElementById('carousel-slider-filter-container-' + idArray[idArray.length - 1]);
62
- var inputEl = document.getElementById('carousel-slider-sliderFilter-sidebar');
63
-
64
- if (inputEl) {
65
- inputEl.value = '';
66
- }
67
- carouselSliderOptions.style.display = 'none';
68
- }
69
-
70
- function carouselSliderHideOptions(event) {
71
- /**
72
- * Get the main div of the filter to tell if this is being
73
- * selected from the sidebar or block so we can hide the dropdown
74
- */
75
- var elementID = event.target.getAttribute('id');
76
- var idArray = elementID.split('-');
77
- var carouselSliderOptions = document.getElementById('carousel-slider-filter-container-' + idArray[idArray.length - 1]);
78
- carouselSliderOptions.style.display = 'none';
79
- }
80
-
81
- function carouselSliderInputKeyUp(event) {
82
- var val = event.target.value;
83
- /**
84
- * Get the main div of the filter to tell if this is being
85
- * selected from the sidebar or block so we can SHOW the dropdown
86
- */
87
- var filterInputContainer = event.target.parentNode.parentNode.parentNode;
88
- filterInputContainer.querySelector('.carousel-slider-filter-option-container').style.display = 'block';
89
- filterInputContainer.style.display = 'block';
90
-
91
- // Let's filter the sliders here
92
- _.each(settings.sliders, function (slider, index) {
93
- var liEl = filterInputContainer.querySelector("[data-slider_id='" + slider.value + "']");
94
- if (0 <= slider.label.toLowerCase().indexOf(val.toLowerCase())) {
95
- // shows options that DO contain the text entered
96
- liEl.style.display = 'block';
97
- } else {
98
- // hides options the do not contain the text entered
99
- liEl.style.display = 'none';
100
- }
101
- });
102
- }
103
-
104
- // Set up the slider items from the localized php variables
105
- var sliderItems = [];
106
- _.each(settings.sliders, function (slider, index) {
107
- sliderItems.push(el('li', {
108
- className: 'carousel-slider-filter-option',
109
- 'data-slider_id': slider.value, onMouseDown: selectSlider
110
- },
111
- slider.label + " ( ID: " + slider.value + " )"))
112
- });
113
-
114
- // Set up slider filter for the block
115
- var inputFilterMain = el('div', {
116
- id: 'carousel-slider-filter-input-main',
117
- className: 'carousel-slider-filter-input'
118
- },
119
- el(TextControl, {
120
- id: 'carousel-slider-sliderFilter-main',
121
- placeHolder: settings.select_slider,
122
- className: 'carousel-slider-filter-input-el blocks-select-control__input',
123
- onChange: carouselSliderOnValueChange,
124
- onClick: carouselSliderFocusClick,
125
- onKeyUp: carouselSliderInputKeyUp,
126
- onBlur: carouselSliderHideOptions
127
- }),
128
- el('span', {
129
- id: 'carousel-slider-filter-input-icon-main',
130
- className: 'carousel-slider-filter-input-icon',
131
- onClick: carouselSliderFocusClick,
132
- dangerouslySetInnerHTML: {__html: '&#9662;'}
133
- }),
134
- el('div', {
135
- id: 'carousel-slider-filter-container-main',
136
- className: 'carousel-slider-filter-option-container'
137
- },
138
- el('ul', null, sliderItems)
139
- )
140
- );
141
- // Create filter input for the sidebar blocks settings
142
- var inputFilterSidebar = el('div', {
143
- id: 'carousel-slider-filter-input-sidebar',
144
- className: 'carousel-slider-filter-input'
145
- },
146
- el(TextControl, {
147
- id: 'carousel-slider-sliderFilter-sidebar',
148
- placeHolder: settings.select_slider,
149
- className: 'carousel-slider-filter-input-el blocks-select-control__input',
150
- onChange: carouselSliderOnValueChange,
151
- onClick: carouselSliderFocusClick,
152
- onKeyUp: carouselSliderInputKeyUp,
153
- onBlur: carouselSliderHideOptions
154
- }),
155
- el('span', {
156
- id: 'carousel-slider-filter-input-icon-sidebar',
157
- className: 'carousel-slider-filter-input-icon',
158
- onClick: carouselSliderFocusClick,
159
- dangerouslySetInnerHTML: {__html: '&#9662;'}
160
- }),
161
- el('div', {
162
- id: 'carousel-slider-filter-container-sidebar',
163
- className: 'carousel-slider-filter-option-container'
164
- },
165
- el('ul', null, sliderItems)
166
- )
167
- );
168
-
169
- // Set up the slider filter dropdown in the side bar 'block' settings
170
- var inspectorControls = el(InspectorControls, {},
171
- el('span', null, settings.selected_slider),
172
- el('br', null),
173
- el('span', null, sliderName),
174
- el('br', null),
175
- el('hr', null),
176
- el('label', {for: 'carousel-slider-sliderFilter-sidebar'}, settings.filter_slider),
177
- inputFilterSidebar
178
- );
179
-
180
- /**
181
- * Create the div container, add an overlay so the user can interact
182
- * with the slider in Gutenberg, then render the iframe with slider
183
- */
184
- if ('' === sliderID) {
185
- children.push(el('div', {style: {width: '100%'}},
186
- el('img', {className: 'carousel-slider-block-logo', src: settings.block_logo}),
187
- el('div', null, settings.block_title),
188
- inputFilterMain
189
- ));
190
- } else {
191
- children.push(
192
- el('div', {className: 'carousel-slider-iframe-container'},
193
- el('div', {className: 'carousel-slider-iframe-overlay'}),
194
- el('iframe', {
195
- className: 'carousel-slider-iframe',
196
- src: settings.site_url + '?carousel_slider_preview=1&carousel_slider_iframe=1&slider_id=' + sliderID,
197
- height: '0',
198
- width: '500',
199
- scrolling: 'no'
200
- })
201
- )
202
- )
203
- }
204
- children.push(inspectorControls);
205
- return [children];
206
- },
207
-
208
- save: function (props) {
209
- var sliderID = props.attributes.sliderID;
210
-
211
- if (!sliderID) return '';
212
- /**
213
- * we're essentially just adding a short code, here is where
214
- * it's save in the editor
215
- *
216
- * return content wrapped in DIV b/c raw HTML is unsupported
217
- * going forward
218
- */
219
- var returnHTML = '[carousel_slide id=' + parseInt(sliderID) + ']';
220
- return el('div', null, returnHTML);
221
- }
222
- });
223
- })(window.wp.blocks, window.wp.i18n, window.wp.editor, window.wp.element, window.wp.components);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/img/ajax-loader.gif DELETED
Binary file
assets/src/img/play.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40" height="40" fill="#f1f1f1"><path d="M12.1 6.7 35.1 20.2 12.1 33.7l0-26.9z"/><path d="m19.7 40c-11 0-20-9-20-20 0-11 9-20 20-20 11 0 20 9 20 20 0 11-9 20-20 20zm0-38c-9.9 0-18 8.1-18 18 0 9.9 8.1 18 18 18 9.9 0 18-8.1 18-18 0-9.9-8.1-18-18-18z"/></svg>
 
assets/src/scss/admin.scss DELETED
@@ -1,14 +0,0 @@
1
- $imagePath: '../img/';
2
-
3
- @import "utilities/variables";
4
- @import "utilities/mixins";
5
- @import 'admin/widget';
6
- @import 'admin/toggle';
7
- @import 'admin/meta-box';
8
- @import 'admin/datepicker';
9
- @import 'admin/select2';
10
- @import 'admin/model';
11
- @import 'admin/modal';
12
- @import 'admin/tooltip';
13
- @import 'admin/tab';
14
- @import 'admin/documentation';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/admin/_datepicker.scss DELETED
@@ -1,46 +0,0 @@
1
- /* jQuery UI Datepicker */
2
- .ui-datepicker{
3
- background-color: #ffffff;
4
- border:1px solid #cccccc;
5
- box-shadow:0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);
6
- padding: 8px;
7
- display: none;
8
- }
9
- .ui-datepicker-header {
10
- background-color: #f1f1f1;
11
- }
12
- .ui-datepicker-prev,
13
- .ui-datepicker-next {
14
- color:#000;
15
- padding: 6px;
16
- cursor: pointer;
17
- }
18
- .ui-datepicker-prev:hover,
19
- .ui-datepicker-next:hover {
20
- color:#000;
21
- }
22
- .ui-datepicker-prev {
23
- float: left;
24
- }
25
- .ui-datepicker-next {
26
- float: right;
27
- }
28
- .ui-datepicker-calendar td > a {
29
- border: 1px solid #ddd;
30
- display: block;
31
- padding: 6px;
32
- text-decoration: none;
33
- color:#000;
34
- background-color:#f1f1f1;
35
- }
36
- .ui-datepicker-calendar td.ui-datepicker-today > a {
37
- color:#000;
38
- background-color:#ffeb3b;
39
- }
40
- .ui-datepicker-calendar td.ui-datepicker-current-day > a {
41
- color:#fff;
42
- background-color:#f44336;
43
- }
44
- .sp-wp-editor-container {
45
- max-width: 560px;
46
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/admin/_documentation.scss DELETED
@@ -1,44 +0,0 @@
1
- .carousel_slider_iframe {
2
- position: relative;
3
- padding-bottom: 56.25%;
4
- padding-top: 25px;
5
- height: 0;
6
- }
7
-
8
- .carousel_slider_iframe > iframe {
9
- position: absolute;
10
- top: 0;
11
- left: 0;
12
- width: 100%;
13
- height: 100%;
14
- }
15
-
16
- .carousel_slider_columns {
17
- display: flex;
18
- flex-wrap: wrap;
19
- box-sizing: border-box;
20
- }
21
-
22
- .carousel_slider_column {
23
- flex: 0 0 100%;
24
- padding: 1rem;
25
- box-sizing: border-box;
26
- }
27
-
28
- @media screen and (min-width: 601px) {
29
- .carousel_slider_column {
30
- flex: 0 0 50%;
31
- }
32
- }
33
-
34
- @media screen and (min-width: 1025px) {
35
- .carousel_slider_column {
36
- flex: 0 0 33.333333%;
37
- }
38
- }
39
-
40
- @media screen and (min-width: 1400px) {
41
- .carousel_slider_column {
42
- flex: 0 0 25%;
43
- }
44
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/admin/_meta-box.scss DELETED
@@ -1,239 +0,0 @@
1
- // Global
2
- .overflowHidden {
3
- overflow: hidden;
4
- }
5
-
6
- .overflowVisible {
7
- overflow: visible;
8
- }
9
-
10
- // Meta box fields
11
- .sp {
12
- &-input-group {
13
- margin-bottom: 10px;
14
- &:after {
15
- content: "";
16
- display: table;
17
- clear: both
18
- }
19
- }
20
-
21
- &-input-label {
22
- label {
23
- font-weight: 600;
24
- margin-right: 30px;
25
- }
26
- }
27
- &-input-field {
28
- }
29
-
30
- &-input-label,
31
- &-input-field {
32
- float: left;
33
- width: 100%;
34
- }
35
- &-input-desc {
36
- color: #999;
37
- font-size: 0.9em;
38
- line-height: 1.3em;
39
- margin: 10px 30px 10px 0;
40
- }
41
- &-input-text {
42
- width: 100%;
43
- padding: 8px 8px 8px 16px;
44
- height: 35px !important;
45
-
46
- option {
47
- padding: 8px 4px;
48
- }
49
- }
50
- }
51
-
52
- .spacing-text {
53
- width: 62px;
54
- }
55
-
56
- @media only screen and (min-width: 600px) {
57
- .sp {
58
- &-input-label {
59
- width: 40%;
60
- }
61
- &-input-field {
62
- width: 60%;
63
- }
64
- }
65
- }
66
-
67
- @media only screen and (min-width: 783px) {
68
- .sp-input-label {
69
- width: 30%;
70
- }
71
- .sp-input-field {
72
- width: 70%;
73
- }
74
- .sp-input-text {
75
- width: 25em;
76
- }
77
- }
78
-
79
- @media only screen and (min-width: 851px) {
80
- .sp-input-label,
81
- .sp-input-field {
82
- width: 100%;
83
- }
84
- }
85
-
86
- @media only screen and (min-width: 1200px) {
87
- .sp-input-label {
88
- width: 40%;
89
- }
90
- .sp-input-field {
91
- width: 60%;
92
- }
93
- }
94
-
95
- @media only screen and (min-width: 1600px) {
96
- .sp-input-label {
97
- width: 30%;
98
- }
99
- .sp-input-field {
100
- width: 70%;
101
- }
102
- }
103
-
104
- // Admin Media gallery
105
- .carousel_slider {
106
- &_images {
107
- &:before,
108
- &:after {
109
- display: table;
110
- content: "";
111
- }
112
- &:after {
113
- clear: both;
114
- }
115
- }
116
- &_gallery_btn {
117
- border: 1px solid #616161;
118
- color: #616161;
119
- background-color: #f1f1f1;
120
- padding: 5px 15px;
121
- text-decoration: none;
122
-
123
- &:hover {
124
- background-color: #ffffff;
125
- color: #616161;
126
- }
127
- }
128
- &_gallery_list {
129
- margin: 15px 0 0 0;
130
- padding: 0;
131
- list-style: none;
132
- box-sizing: border-box;
133
- &:before,
134
- &:after {
135
- display: table;
136
- content: "";
137
- }
138
- &:after {
139
- clear: both;
140
- }
141
-
142
- li {
143
- float: left;
144
- margin: 0;
145
- padding: 0;
146
-
147
- > img {
148
- margin-right: 10px;
149
- margin-bottom: 10px;
150
- display: block;
151
- box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
152
- }
153
- }
154
- }
155
- }
156
-
157
- // Hide Post carousel fields
158
- // Related fields will be open by jQuery
159
- #field-_post_date_after,
160
- #field-_post_date_before,
161
- #field-_post_categories,
162
- #field-_post_tags,
163
- #field-_post_in {
164
- display: none;
165
- }
166
-
167
- // Hide Post carousel fields
168
- // Related fields will be open by jQuery
169
- #field-_product_query,
170
- #field-_product_categories,
171
- #field-_product_tags,
172
- #field-_product_in {
173
- display: none;
174
- }
175
-
176
- #carousel-slider-navigation-settings,
177
- #carousel-slider-responsive-settings,
178
- #carousel-slider-autoplay-settings {
179
- p {
180
- overflow: hidden;
181
- }
182
- input.small-text,
183
- select.small-text {
184
- float: right;
185
- }
186
- }
187
-
188
- // Content Carousel Meta
189
- .tab-background {
190
- .slide_bg_wrapper {
191
- display: flex;
192
- padding: 1rem 0;
193
- }
194
- .slide_thumb {
195
- position: relative;
196
- float: left;
197
- margin-right: 1rem;
198
- border: solid 1px #e0e0e0;
199
- padding: 5px;
200
-
201
- > div {
202
- width: 320px;
203
- height: 180px;
204
- background-color: #f1f1f1;
205
- background-repeat: no-repeat;
206
- background-position: top left;
207
- background-size: 100% auto;
208
- }
209
-
210
- > span {
211
- display: inline-block;
212
- position: absolute;
213
- top: 0;
214
- right: 0;
215
- font-family: Arial, Helvetica, sans-serif;
216
- font-size: 14px;
217
- line-height: 14px;
218
- padding: 3px 3px;
219
- background-color: rgba(0, 0, 0, 0.5);
220
- color: #ffffff;
221
- cursor: pointer;
222
- transition: all .3s ease-in-out;
223
-
224
- &.hidden {
225
- display: none !important;
226
- }
227
- }
228
- }
229
-
230
- .slide_image_settings_line {
231
- display: block;
232
- margin: 0.5rem 0;
233
-
234
- > span {
235
- width: 150px;
236
- display: inline-block;
237
- }
238
- }
239
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/admin/_modal.scss DELETED
@@ -1,108 +0,0 @@
1
- .modal {
2
- @include overlay;
3
- align-items: center;
4
- display: none;
5
- justify-content: center;
6
- overflow: hidden;
7
- position: fixed;
8
- z-index: 10000;
9
-
10
- .admin-bar & {
11
- top: 32px;
12
- }
13
-
14
- .delete-icon {
15
- @include delete;
16
- }
17
-
18
- // Modifiers
19
- &.is-active {
20
- display: flex;
21
- }
22
-
23
- &-background {
24
- @include overlay;
25
- background-color: rgba($black, 0.86);
26
- }
27
-
28
- &-content,
29
- &-card {
30
- margin: 0 20px;
31
- max-height: calc(100vh - 160px);
32
- overflow: auto;
33
- position: relative;
34
- width: 100%;
35
- // Responsiveness
36
- @media screen and (min-width: 769px), print {
37
- margin: 0 auto;
38
- max-height: calc(100vh - 40px);
39
- width: 640px;
40
- }
41
- }
42
-
43
- &-close {
44
- @include delete;
45
- background: none;
46
- height: 40px;
47
- position: fixed;
48
- right: 20px;
49
- top: 20px;
50
- width: 40px;
51
- }
52
-
53
- &-card {
54
- display: flex;
55
- flex-direction: column;
56
- max-height: calc(100vh - 40px);
57
- overflow: hidden;
58
- }
59
-
60
- &-card-head,
61
- &-card-foot {
62
- align-items: center;
63
- background-color: $background;
64
- display: flex;
65
- flex-shrink: 0;
66
- justify-content: flex-start;
67
- margin: 0;
68
- padding: 20px;
69
- position: relative;
70
- }
71
-
72
- &-card-head {
73
- border-bottom: 1px solid $border;
74
- border-top-left-radius: $radius-large;
75
- border-top-right-radius: $radius-large;
76
- }
77
-
78
- &-card-title {
79
- color: $text-strong;
80
- flex-grow: 1;
81
- flex-shrink: 0;
82
- font-size: $size-4;
83
- line-height: 1;
84
- margin: 0;
85
- padding: 0;
86
- }
87
-
88
- &-card-foot {
89
- border-bottom-left-radius: $radius-large;
90
- border-bottom-right-radius: $radius-large;
91
- border-top: 1px solid $border;
92
- .button {
93
- &:not(:last-child) {
94
- margin-right: 10px;
95
- }
96
- }
97
- }
98
-
99
- &-card-body {
100
- -webkit-overflow-scrolling: touch;
101
- background-color: $white;
102
- flex-grow: 1;
103
- flex-shrink: 1;
104
- overflow: auto;
105
- margin: 0;
106
- padding: 20px;
107
- }
108
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/admin/_model.scss DELETED
@@ -1,140 +0,0 @@
1
- .carousel_slider {
2
- &-modal{
3
- display: none;
4
- position: fixed;
5
- z-index: 10000;
6
- left: 0;
7
- top: 0;
8
- width: 100%;
9
- height: 100%;
10
- overflow: hidden;
11
- background-color: rgb(0,0,0);
12
- background-color: rgba(0,0,0,0.8);
13
-
14
- &-content{
15
- position: relative;
16
- background-color: #fefefe;
17
- margin: 50px auto 18px;
18
- padding: 0;
19
- border: 1px solid #23282d;
20
- min-height: 300px;
21
- width: 412px;
22
- // height: 90%;
23
- box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
24
- }
25
-
26
- &-header {
27
- background-color: #23282d;
28
- color: white;
29
- font-weight: bold;
30
- padding: 10px 16px;
31
- }
32
- &-body {
33
- // max-height: 300px;
34
- overflow-x: hidden;
35
- overflow-y: scroll;
36
- padding: 2px 16px;
37
- }
38
-
39
- &-footer {
40
- background-color: #23282d;
41
- color: white;
42
- font-weight: bold;
43
- padding: 10px 16px;
44
-
45
- img {
46
- display: none;
47
- height: 14px;
48
- vertical-align: middle;
49
- width: 14px;
50
- }
51
- }
52
- }
53
-
54
- &-form {
55
- margin-left: -15px;
56
- margin-right: -15px;
57
- }
58
-
59
- // Carousel Slider Images URL
60
- &-fields {
61
- background-color: #f1f1f1;
62
- margin: 15px;
63
- padding: 15px 25px 15px 15px;
64
- position: relative;
65
- display: inline-block;
66
- float: left;
67
-
68
- label.setting {
69
- display: block;
70
- margin-bottom: 5px;
71
-
72
- .name {
73
- display: inline-block;
74
- vertical-align: top;
75
- width: 75px;
76
- }
77
- input, textarea {
78
- width: 250px;
79
- }
80
- }
81
- .actions {
82
- position: absolute;
83
- right: 0;
84
- top: 0;
85
-
86
- > span {
87
- background: #fff none repeat scroll 0 0;
88
- display: block;
89
- float: none;
90
- cursor: pointer;
91
-
92
- .dashicons-plus-alt:hover {
93
- color: green;
94
- }
95
-
96
- .dashicons-trash:hover {
97
- color: red;
98
- }
99
- }
100
- }
101
- }
102
-
103
- &-close {
104
- color: #f1f1f1;
105
- float: right;
106
- font-size: 28px;
107
- font-weight: bold;
108
-
109
- &:hover,
110
- &:focus {
111
- color: #fff;
112
- text-decoration: none;
113
- cursor: pointer;
114
- }
115
- }
116
- }
117
-
118
- .carousel_slider_url_images_list {
119
- margin: 15px 0 0;
120
- padding: 0;
121
- list-style: none;
122
-
123
- li {
124
- float: left;
125
- display: inline-block;
126
- margin: 0 5px 5px 0;
127
- }
128
- }
129
-
130
- @media only screen and (min-width: 820px ){
131
- .carousel_slider-modal-content {
132
- width: 810px;
133
- }
134
- }
135
-
136
- @media only screen and (min-width: 1230px ){
137
- .carousel_slider-modal-content {
138
- width: 1220px;
139
- }
140
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/admin/_select2.scss DELETED
@@ -1,634 +0,0 @@
1
- .select2-container {
2
- box-sizing: border-box;
3
- display: inline-block;
4
- margin: 0;
5
- position: relative;
6
- vertical-align: middle;
7
- }
8
-
9
- .select2-container .select2-selection--single {
10
- box-sizing: border-box;
11
- cursor: pointer;
12
- display: block;
13
- height: 28px;
14
- user-select: none;
15
- -webkit-user-select: none;
16
- }
17
-
18
- .select2-container .select2-selection--single .select2-selection__rendered {
19
- display: block;
20
- padding-left: 8px;
21
- padding-right: 20px;
22
- overflow: hidden;
23
- text-overflow: ellipsis;
24
- white-space: nowrap;
25
- }
26
-
27
- .select2-container .select2-selection--single .select2-selection__clear {
28
- position: relative;
29
- }
30
-
31
- .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
32
- padding-right: 8px;
33
- padding-left: 20px;
34
- }
35
-
36
- .select2-container .select2-selection--multiple {
37
- box-sizing: border-box;
38
- cursor: pointer;
39
- display: block;
40
- min-height: 32px;
41
- user-select: none;
42
- -webkit-user-select: none;
43
- }
44
-
45
- .select2-container .select2-selection--multiple .select2-selection__rendered {
46
- display: inline-block;
47
- overflow: hidden;
48
- padding-left: 8px;
49
- text-overflow: ellipsis;
50
- white-space: nowrap;
51
- }
52
-
53
- .select2-container .select2-search--inline {
54
- float: left;
55
- }
56
-
57
- .select2-container .select2-search--inline .select2-search__field {
58
- box-sizing: border-box;
59
- border: none;
60
- font-size: 100%;
61
- margin-top: 5px;
62
- padding: 0;
63
- }
64
-
65
- .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
66
- -webkit-appearance: none;
67
- }
68
-
69
- .select2-dropdown {
70
- background-color: white;
71
- border: 1px solid #aaa;
72
- border-radius: 0;
73
- box-sizing: border-box;
74
- display: block;
75
- position: absolute;
76
- left: -100000px;
77
- width: 100%;
78
- z-index: 1051;
79
- }
80
-
81
- .select2-results {
82
- display: block;
83
- }
84
-
85
- .select2-results__options {
86
- list-style: none;
87
- margin: 0;
88
- padding: 0;
89
- }
90
-
91
- .select2-results__option {
92
- padding: 6px;
93
- user-select: none;
94
- -webkit-user-select: none;
95
- }
96
-
97
- .select2-results__option[aria-selected] {
98
- cursor: pointer;
99
- }
100
-
101
- .select2-container--open .select2-dropdown {
102
- left: 0;
103
- }
104
-
105
- .select2-container--open .select2-dropdown--above {
106
- border-bottom: none;
107
- border-bottom-left-radius: 0;
108
- border-bottom-right-radius: 0;
109
- }
110
-
111
- .select2-container--open .select2-dropdown--below {
112
- border-top: none;
113
- border-top-left-radius: 0;
114
- border-top-right-radius: 0;
115
- }
116
-
117
- .select2-search--dropdown {
118
- display: block;
119
- padding: 4px;
120
- }
121
-
122
- .select2-search--dropdown .select2-search__field {
123
- padding: 4px;
124
- width: 100%;
125
- box-sizing: border-box;
126
- }
127
-
128
- .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
129
- -webkit-appearance: none;
130
- }
131
-
132
- .select2-search--dropdown.select2-search--hide {
133
- display: none;
134
- }
135
-
136
- .select2-close-mask {
137
- border: 0;
138
- margin: 0;
139
- padding: 0;
140
- display: block;
141
- position: fixed;
142
- left: 0;
143
- top: 0;
144
- min-height: 100%;
145
- min-width: 100%;
146
- height: auto;
147
- width: auto;
148
- opacity: 0;
149
- z-index: 99;
150
- background-color: #fff;
151
- filter: alpha(opacity=0);
152
- }
153
-
154
- .select2-hidden-accessible {
155
- border: 0 !important;
156
- clip: rect(0 0 0 0) !important;
157
- height: 1px !important;
158
- margin: -1px !important;
159
- overflow: hidden !important;
160
- padding: 0 !important;
161
- position: absolute !important;
162
- width: 1px !important;
163
- }
164
-
165
- .select2-container--default .select2-selection--single {
166
- background-color: #fff;
167
- border: 1px solid #aaa;
168
- border-radius: 0;
169
- }
170
-
171
- .select2-container--default .select2-selection--single .select2-selection__rendered {
172
- color: #444;
173
- line-height: 28px;
174
- }
175
-
176
- .select2-container--default .select2-selection--single .select2-selection__clear {
177
- cursor: pointer;
178
- float: right;
179
- font-weight: bold;
180
- }
181
-
182
- .select2-container--default .select2-selection--single .select2-selection__placeholder {
183
- color: #999;
184
- }
185
-
186
- .select2-container--default .select2-selection--single .select2-selection__arrow {
187
- height: 26px;
188
- position: absolute;
189
- top: 1px;
190
- right: 1px;
191
- width: 20px;
192
- }
193
-
194
- .select2-container--default .select2-selection--single .select2-selection__arrow b {
195
- border-color: #888 transparent transparent transparent;
196
- border-style: solid;
197
- border-width: 5px 4px 0 4px;
198
- height: 0;
199
- left: 50%;
200
- margin-left: -4px;
201
- margin-top: -2px;
202
- position: absolute;
203
- top: 50%;
204
- width: 0;
205
- }
206
-
207
- .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
208
- float: left;
209
- }
210
-
211
- .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
212
- left: 1px;
213
- right: auto;
214
- }
215
-
216
- .select2-container--default.select2-container--disabled .select2-selection--single {
217
- background-color: #eee;
218
- cursor: default;
219
- }
220
-
221
- .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
222
- display: none;
223
- }
224
-
225
- .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
226
- border-color: transparent transparent #888 transparent;
227
- border-width: 0 4px 5px 4px;
228
- }
229
-
230
- .select2-container--default .select2-selection--multiple {
231
- background-color: white;
232
- border: 1px solid #aaa;
233
- border-radius: 0;
234
- cursor: text;
235
- }
236
-
237
- .select2-container--default .select2-selection--multiple .select2-selection__rendered {
238
- box-sizing: border-box;
239
- list-style: none;
240
- margin: 0;
241
- padding: 0 5px;
242
- width: 100%;
243
- }
244
-
245
- .select2-container--default .select2-selection--multiple .select2-selection__rendered li {
246
- list-style: none;
247
- }
248
-
249
- .select2-container--default .select2-selection--multiple .select2-selection__placeholder {
250
- color: #999;
251
- margin-top: 5px;
252
- float: left;
253
- }
254
-
255
- .select2-container--default .select2-selection--multiple .select2-selection__clear {
256
- cursor: pointer;
257
- float: right;
258
- font-weight: bold;
259
- margin-top: 5px;
260
- margin-right: 10px;
261
- }
262
-
263
- .select2-container--default .select2-selection--multiple .select2-selection__choice {
264
- background-color: #e4e4e4;
265
- border: 1px solid #aaa;
266
- border-radius: 0;
267
- cursor: default;
268
- float: left;
269
- margin-right: 5px;
270
- margin-top: 5px;
271
- padding: 0 5px;
272
- }
273
-
274
- .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
275
- color: #999;
276
- cursor: pointer;
277
- display: inline-block;
278
- font-weight: bold;
279
- margin-right: 2px;
280
- }
281
-
282
- .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
283
- color: #333;
284
- }
285
-
286
- .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
287
- float: right;
288
- }
289
-
290
- .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
291
- margin-left: 5px;
292
- margin-right: auto;
293
- }
294
-
295
- .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
296
- margin-left: 2px;
297
- margin-right: auto;
298
- }
299
-
300
- .select2-container--default.select2-container--focus .select2-selection--multiple {
301
- border: solid black 1px;
302
- outline: 0;
303
- }
304
-
305
- .select2-container--default.select2-container--disabled .select2-selection--multiple {
306
- background-color: #eee;
307
- cursor: default;
308
- }
309
-
310
- .select2-container--default.select2-container--disabled .select2-selection__choice__remove {
311
- display: none;
312
- }
313
-
314
- .select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
315
- border-top-left-radius: 0;
316
- border-top-right-radius: 0;
317
- }
318
-
319
- .select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
320
- border-bottom-left-radius: 0;
321
- border-bottom-right-radius: 0;
322
- }
323
-
324
- .select2-container--default .select2-search--dropdown .select2-search__field {
325
- border: 1px solid #aaa;
326
- }
327
-
328
- .select2-container--default .select2-search--inline .select2-search__field {
329
- background: transparent;
330
- border: none;
331
- outline: 0;
332
- box-shadow: none;
333
- -webkit-appearance: textfield;
334
- }
335
-
336
- .select2-container--default .select2-results > .select2-results__options {
337
- max-height: 200px;
338
- overflow-y: auto;
339
- }
340
-
341
- .select2-container--default .select2-results__option[role=group] {
342
- padding: 0;
343
- }
344
-
345
- .select2-container--default .select2-results__option[aria-disabled=true] {
346
- color: #999;
347
- }
348
-
349
- .select2-container--default .select2-results__option[aria-selected=true] {
350
- background-color: #ddd;
351
- }
352
-
353
- .select2-container--default .select2-results__option .select2-results__option {
354
- padding-left: 1em;
355
- }
356
-
357
- .select2-container--default .select2-results__option .select2-results__option .select2-results__group {
358
- padding-left: 0;
359
- }
360
-
361
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option {
362
- margin-left: -1em;
363
- padding-left: 2em;
364
- }
365
-
366
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
367
- margin-left: -2em;
368
- padding-left: 3em;
369
- }
370
-
371
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
372
- margin-left: -3em;
373
- padding-left: 4em;
374
- }
375
-
376
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
377
- margin-left: -4em;
378
- padding-left: 5em;
379
- }
380
-
381
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
382
- margin-left: -5em;
383
- padding-left: 6em;
384
- }
385
-
386
- .select2-container--default .select2-results__option--highlighted[aria-selected] {
387
- background-color: #5897fb;
388
- color: white;
389
- }
390
-
391
- .select2-container--default .select2-results__group {
392
- cursor: default;
393
- display: block;
394
- padding: 6px;
395
- }
396
-
397
- .select2-container--classic .select2-selection--single {
398
- background-color: #f7f7f7;
399
- border: 1px solid #aaa;
400
- border-radius: 0;
401
- outline: 0;
402
- background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
403
- background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
404
- background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
405
- background-repeat: repeat-x;
406
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0);
407
- }
408
-
409
- .select2-container--classic .select2-selection--single:focus {
410
- border: 1px solid #5897fb;
411
- }
412
-
413
- .select2-container--classic .select2-selection--single .select2-selection__rendered {
414
- color: #444;
415
- line-height: 28px;
416
- }
417
-
418
- .select2-container--classic .select2-selection--single .select2-selection__clear {
419
- cursor: pointer;
420
- float: right;
421
- font-weight: bold;
422
- margin-right: 10px;
423
- }
424
-
425
- .select2-container--classic .select2-selection--single .select2-selection__placeholder {
426
- color: #999;
427
- }
428
-
429
- .select2-container--classic .select2-selection--single .select2-selection__arrow {
430
- background-color: #ddd;
431
- border: none;
432
- border-left: 1px solid #aaa;
433
- border-top-right-radius: 4px;
434
- border-bottom-right-radius: 4px;
435
- height: 26px;
436
- position: absolute;
437
- top: 1px;
438
- right: 1px;
439
- width: 20px;
440
- background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
441
- background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
442
- background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
443
- background-repeat: repeat-x;
444
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0);
445
- }
446
-
447
- .select2-container--classic .select2-selection--single .select2-selection__arrow b {
448
- border-color: #888 transparent transparent transparent;
449
- border-style: solid;
450
- border-width: 5px 4px 0 4px;
451
- height: 0;
452
- left: 50%;
453
- margin-left: -4px;
454
- margin-top: -2px;
455
- position: absolute;
456
- top: 50%;
457
- width: 0;
458
- }
459
-
460
- .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
461
- float: left;
462
- }
463
-
464
- .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
465
- border: none;
466
- border-right: 1px solid #aaa;
467
- border-radius: 0;
468
- border-top-left-radius: 4px;
469
- border-bottom-left-radius: 4px;
470
- left: 1px;
471
- right: auto;
472
- }
473
-
474
- .select2-container--classic.select2-container--open .select2-selection--single {
475
- border: 1px solid #5897fb;
476
- }
477
-
478
- .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
479
- background: transparent;
480
- border: none;
481
- }
482
-
483
- .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
484
- border-color: transparent transparent #888 transparent;
485
- border-width: 0 4px 5px 4px;
486
- }
487
-
488
- .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
489
- border-top: none;
490
- border-top-left-radius: 0;
491
- border-top-right-radius: 0;
492
- background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
493
- background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
494
- background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
495
- background-repeat: repeat-x;
496
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0);
497
- }
498
-
499
- .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
500
- border-bottom: none;
501
- border-bottom-left-radius: 0;
502
- border-bottom-right-radius: 0;
503
- background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
504
- background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
505
- background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
506
- background-repeat: repeat-x;
507
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0);
508
- }
509
-
510
- .select2-container--classic .select2-selection--multiple {
511
- background-color: white;
512
- border: 1px solid #aaa;
513
- border-radius: 0;
514
- cursor: text;
515
- outline: 0;
516
- }
517
-
518
- .select2-container--classic .select2-selection--multiple:focus {
519
- border: 1px solid #5897fb;
520
- }
521
-
522
- .select2-container--classic .select2-selection--multiple .select2-selection__rendered {
523
- list-style: none;
524
- margin: 0;
525
- padding: 0 5px;
526
- }
527
-
528
- .select2-container--classic .select2-selection--multiple .select2-selection__clear {
529
- display: none;
530
- }
531
-
532
- .select2-container--classic .select2-selection--multiple .select2-selection__choice {
533
- background-color: #e4e4e4;
534
- border: 1px solid #aaa;
535
- border-radius: 0;
536
- cursor: default;
537
- float: left;
538
- margin-right: 5px;
539
- margin-top: 5px;
540
- padding: 0 5px;
541
- }
542
-
543
- .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
544
- color: #888;
545
- cursor: pointer;
546
- display: inline-block;
547
- font-weight: bold;
548
- margin-right: 2px;
549
- }
550
-
551
- .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
552
- color: #555;
553
- }
554
-
555
- .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
556
- float: right;
557
- }
558
-
559
- .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
560
- margin-left: 5px;
561
- margin-right: auto;
562
- }
563
-
564
- .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
565
- margin-left: 2px;
566
- margin-right: auto;
567
- }
568
-
569
- .select2-container--classic.select2-container--open .select2-selection--multiple {
570
- border: 1px solid #5897fb;
571
- }
572
-
573
- .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
574
- border-top: none;
575
- border-top-left-radius: 0;
576
- border-top-right-radius: 0;
577
- }
578
-
579
- .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
580
- border-bottom: none;
581
- border-bottom-left-radius: 0;
582
- border-bottom-right-radius: 0;
583
- }
584
-
585
- .select2-container--classic .select2-search--dropdown .select2-search__field {
586
- border: 1px solid #aaa;
587
- outline: 0;
588
- }
589
-
590
- .select2-container--classic .select2-search--inline .select2-search__field {
591
- outline: 0;
592
- box-shadow: none;
593
- }
594
-
595
- .select2-container--classic .select2-dropdown {
596
- background-color: white;
597
- border: 1px solid transparent;
598
- }
599
-
600
- .select2-container--classic .select2-dropdown--above {
601
- border-bottom: none;
602
- }
603
-
604
- .select2-container--classic .select2-dropdown--below {
605
- border-top: none;
606
- }
607
-
608
- .select2-container--classic .select2-results > .select2-results__options {
609
- max-height: 200px;
610
- overflow-y: auto;
611
- }
612
-
613
- .select2-container--classic .select2-results__option[role=group] {
614
- padding: 0;
615
- }
616
-
617
- .select2-container--classic .select2-results__option[aria-disabled=true] {
618
- color: grey;
619
- }
620
-
621
- .select2-container--classic .select2-results__option--highlighted[aria-selected] {
622
- background-color: #3875d7;
623
- color: white;
624
- }
625
-
626
- .select2-container--classic .select2-results__group {
627
- cursor: default;
628
- display: block;
629
- padding: 6px;
630
- }
631
-
632
- .select2-container--classic.select2-container--open .select2-dropdown {
633
- border-color: #5897fb;
634
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/admin/_tab.scss DELETED
@@ -1,79 +0,0 @@
1
- /* Tabs */
2
- $accent: #323232;
3
-
4
- .shapla-nav {
5
- list-style: none !important;
6
- margin: 0;
7
- padding: 0;
8
-
9
- &:before,
10
- &:after {
11
- display: table;
12
- content: ' ';
13
- }
14
-
15
- &:after {
16
- clear: both;
17
- }
18
-
19
- li {
20
- float: left;
21
- position: relative;
22
- margin: 0 1px -1px 0 !important;
23
- z-index: 1;
24
- outline: 0;
25
- }
26
- a {
27
- text-decoration: none;
28
- display: block;
29
- padding: 15px 10px;
30
- line-height: 1;
31
- outline: 0;
32
- }
33
- }
34
-
35
- .shapla-tab {
36
- margin: 0 0 2em 0;
37
- padding: 21px 20px 20px 20px;
38
-
39
- p:first-of-type {
40
- margin-top: 0;
41
- }
42
- p:last-of-type {
43
- margin-bottom: 0;
44
- }
45
- }
46
-
47
- .shapla-tabs--normal {
48
- .shapla-nav {
49
- a {
50
- background: $accent;
51
- color: #fff;
52
- }
53
- .ui-tabs-active a {
54
- background: #f1f1f1;
55
- color: $accent;
56
- outline: 0;
57
- }
58
- }
59
- .shapla-tab {
60
- background: #f1f1f1;
61
- }
62
- }
63
-
64
- .shapla-tabs--stroke {
65
- .shapla-nav li {
66
- margin: 0 -1px 0 0 !important;
67
- }
68
- .shapla-nav a {
69
- border: 1px solid $accent;
70
- color: $accent;
71
- }
72
- .shapla-nav .ui-tabs-active a {
73
- border-bottom-color: white;
74
- }
75
- .shapla-tab {
76
- border: 1px solid $accent;
77
- margin-top: -1px;
78
- }
79
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/admin/_toggle.scss DELETED
@@ -1,51 +0,0 @@
1
- .shapla-toggle {
2
- margin: 1em 0 !important;
3
-
4
- &-title {
5
- display: block;
6
- padding: 15px 10px;
7
- outline: 0;
8
- cursor: pointer;
9
- position: relative;
10
-
11
- &:after {
12
- position: absolute;
13
- right: 15px;
14
- font: 400 20px/1 dashicons;
15
- margin-left: -1px;
16
- padding-right: 3px;
17
- vertical-align: top;
18
- content: "\f132";
19
- }
20
-
21
- &.ui-state-active:after {
22
- content: "\f460";
23
- }
24
- }
25
-
26
- &-content {
27
- padding: 20px;
28
- background-color: #f1f1f1;
29
- }
30
-
31
- &--normal .shapla-toggle-title {
32
- background: #9e9e9e;
33
- color: white;
34
- font-weight: 600;
35
- }
36
-
37
- &--stroke .shapla-toggle-title {
38
- border: 1px solid #363f48;
39
- font-weight: 600;
40
-
41
- &:after {
42
- color: #363f48;
43
- }
44
- }
45
- &--stroke .shapla-toggle-content {
46
- padding: 20px;
47
- background-color: #ffffff;
48
- border: 1px solid #363f48;
49
- border-top: none;
50
- }
51
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/admin/_tooltip.scss DELETED
@@ -1,133 +0,0 @@
1
- .cs-tooltip {
2
- display: inline-block;
3
- width: 1.5em;
4
- height: 1.5em;
5
- float: right;
6
-
7
- &:after {
8
- font-family: Dashicons;
9
- speak: none;
10
- font-weight: 400;
11
- text-transform: none;
12
- -webkit-font-smoothing: antialiased;
13
- width: 100%;
14
- height: 100%;
15
- text-align: center;
16
- content: "\f223";
17
- cursor: help;
18
- }
19
- }
20
-
21
- /* TipTip CSS - Version 1.2 */
22
-
23
- #tiptip_holder {
24
- display: none;
25
- position: absolute;
26
- top: 0;
27
- left: 0;
28
- z-index: 99999;
29
- }
30
-
31
- #tiptip_holder.tip_top {
32
- padding-bottom: 5px;
33
- }
34
-
35
- #tiptip_holder.tip_bottom {
36
- padding-top: 5px;
37
- }
38
-
39
- #tiptip_holder.tip_right {
40
- padding-left: 5px;
41
- }
42
-
43
- #tiptip_holder.tip_left {
44
- padding-right: 5px;
45
- }
46
-
47
- #tiptip_content {
48
- font-size: 11px;
49
- color: #fff;
50
- text-shadow: 0 0 2px #000;
51
- padding: 4px 8px;
52
- border: 1px solid rgba(255,255,255,0.25);
53
- background-color: rgb(25,25,25);
54
- background-color: rgba(25,25,25,0.92);
55
- background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(transparent), to(#000));
56
- border-radius: 3px;
57
- -webkit-border-radius: 3px;
58
- -moz-border-radius: 3px;
59
- box-shadow: 0 0 3px #555;
60
- -webkit-box-shadow: 0 0 3px #555;
61
- -moz-box-shadow: 0 0 3px #555;
62
- }
63
-
64
- #tiptip_arrow, #tiptip_arrow_inner {
65
- position: absolute;
66
- border-color: transparent;
67
- border-style: solid;
68
- border-width: 6px;
69
- height: 0;
70
- width: 0;
71
- }
72
-
73
- #tiptip_holder.tip_top #tiptip_arrow {
74
- border-top-color: #fff;
75
- border-top-color: rgba(255,255,255,0.35);
76
- }
77
-
78
- #tiptip_holder.tip_bottom #tiptip_arrow {
79
- border-bottom-color: #fff;
80
- border-bottom-color: rgba(255,255,255,0.35);
81
- }
82
-
83
- #tiptip_holder.tip_right #tiptip_arrow {
84
- border-right-color: #fff;
85
- border-right-color: rgba(255,255,255,0.35);
86
- }
87
-
88
- #tiptip_holder.tip_left #tiptip_arrow {
89
- border-left-color: #fff;
90
- border-left-color: rgba(255,255,255,0.35);
91
- }
92
-
93
- #tiptip_holder.tip_top #tiptip_arrow_inner {
94
- margin-top: -7px;
95
- margin-left: -6px;
96
- border-top-color: rgb(25,25,25);
97
- border-top-color: rgba(25,25,25,0.92);
98
- }
99
-
100
- #tiptip_holder.tip_bottom #tiptip_arrow_inner {
101
- margin-top: -5px;
102
- margin-left: -6px;
103
- border-bottom-color: rgb(25,25,25);
104
- border-bottom-color: rgba(25,25,25,0.92);
105
- }
106
-
107
- #tiptip_holder.tip_right #tiptip_arrow_inner {
108
- margin-top: -6px;
109
- margin-left: -5px;
110
- border-right-color: rgb(25,25,25);
111
- border-right-color: rgba(25,25,25,0.92);
112
- }
113
-
114
- #tiptip_holder.tip_left #tiptip_arrow_inner {
115
- margin-top: -6px;
116
- margin-left: -7px;
117
- border-left-color: rgb(25,25,25);
118
- border-left-color: rgba(25,25,25,0.92);
119
- }
120
-
121
- /* Webkit Hacks */
122
- @media screen and (-webkit-min-device-pixel-ratio:0) {
123
- #tiptip_content {
124
- padding: 4px 8px 5px 8px;
125
- background-color: rgba(45,45,45,0.88);
126
- }
127
- #tiptip_holder.tip_bottom #tiptip_arrow_inner {
128
- border-bottom-color: rgba(45,45,45,0.88);
129
- }
130
- #tiptip_holder.tip_top #tiptip_arrow_inner {
131
- border-top-color: rgba(20,20,20,0.92);
132
- }
133
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/admin/_widget.scss DELETED
@@ -1,10 +0,0 @@
1
- // Widget Styles
2
- div[id*="_carousel_slider"] .widget-top{
3
- background: #ddffff !important;
4
- border: 1px solid #2196f3 !important;
5
-
6
- &:hover {
7
- background: #ffdddd !important;
8
- border: 1px solid #f44336 !important;
9
- }
10
- }
 
 
 
 
 
 
 
 
 
 
assets/src/scss/frontend.scss DELETED
@@ -1,21 +0,0 @@
1
- $imagePath: '../img/';
2
-
3
- @import 'public/variables';
4
- @import 'public/core';
5
- @import 'public/animate';
6
- @import 'public/autoheight';
7
- @import 'public/lazyload';
8
- @import 'public/video';
9
- @import 'public/theme';
10
- @import 'public/post-carousel';
11
- @import 'public/product-carousel';
12
- @import 'public/content-carousel';
13
- @import 'public/image-carousel';
14
- @import 'public/button';
15
- @import 'public/magnific-popup';
16
- @import 'public/product_modal';
17
-
18
- // Disable magnific popup counter as it show wrong count
19
- .mfp-counter {
20
- display: none;
21
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/gutenberg-block.scss DELETED
@@ -1,108 +0,0 @@
1
- .carousel-slider-block-logo {
2
- max-width: 50px !important;
3
- max-height: 50px;
4
- float: left;
5
- margin-right: 15px;
6
- margin-bottom: 10px;
7
- }
8
-
9
- #carousel-slider-filter-input-main {
10
- clear: both;
11
- }
12
-
13
- .carousel-slider-iframe-container {
14
- position: relative;
15
- }
16
-
17
- .carousel-slider-iframe-overlay {
18
- position: absolute;
19
- top: 0;
20
- right: 0;
21
- bottom: 0;
22
- left: 0;
23
- }
24
-
25
- .carousel-slider-block-slider-selector {
26
- background-color: lightgrey;
27
- border-bottom: 1px solid;
28
- margin-bottom: 5px;
29
- padding: 4px;
30
- }
31
-
32
- .carousel-slider-filter-input {
33
- border: 1px solid #ddd;
34
- border-radius: 5px;
35
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, .07);
36
- padding: 0;
37
- width: 100%;
38
- margin-top: 10px;
39
- margin-bottom: 10px;
40
- position: relative;
41
- }
42
-
43
- .carousel-slider-filter-input .blocks-select-control__input {
44
- margin: 0 0 0 0;
45
- }
46
-
47
- .carousel-slider-filter-input-el {
48
- border: none !important;
49
- box-shadow: none !important;
50
- width: 95%;
51
- position: relative;
52
- display: inline-block;
53
- }
54
-
55
- .carousel-slider-filter-input-icon {
56
- display: inline-block;
57
- content: '&#9662;';
58
- color: #999;
59
- font-size: 14px;
60
- right: .77em;
61
- position: absolute;
62
- top: .2em;
63
- }
64
-
65
- #carousel-slider-sliderFilter-main {
66
- border-top: none;
67
- border-left: none;
68
- border-bottom: none;
69
- }
70
-
71
- #carousel-slider-sliderFilter-sidebar {
72
- border-top: none;
73
- border-left: none;
74
- border-bottom: none;
75
- width: 95%;
76
- }
77
-
78
- #carousel-slider-filter-input-icon-sidebar {
79
- font-size: 1.4em;
80
- top: .35em;
81
- right: .45em;
82
- }
83
-
84
- .carousel-slider-filter-input-el.blocks-select-control__input > .components-base-control__field {
85
- margin-bottom: 0;
86
- }
87
-
88
- .carousel-slider-filter-option-container {
89
- display: none;
90
- position: absolute;
91
- background-color: #edeff0;
92
- z-index: 10000;
93
- padding: 4px;
94
- width: 100%;
95
- border-radius: 5px;
96
- max-height: 200px;
97
- overflow: scroll;
98
- box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12) !important;
99
- }
100
-
101
- .carousel-slider-filter-option {
102
- list-style: none;
103
- }
104
-
105
- .carousel-slider-filter-option:hover {
106
- background-color: #0073aa;
107
- color: white;
108
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/public/_animate.scss DELETED
@@ -1,96 +0,0 @@
1
- // Owl Carousel - Animate Plugin
2
- .carousel-slider {
3
-
4
- .animated {
5
- animation-duration: 1000ms;
6
- animation-fill-mode: both;
7
- }
8
- .owl-animated-in {
9
- z-index: 0;
10
- }
11
- .owl-animated-out {
12
- z-index: 1;
13
- }
14
- .fadeOut {
15
- animation-name: fadeOut;
16
- }
17
- .fadeInDown {
18
- animation-name: fadeInDown;
19
- }
20
- .fadeInUp {
21
- animation-name: fadeInUp;
22
- }
23
- .fadeInRight {
24
- animation-name: fadeInRight;
25
- }
26
- .fadeInLeft {
27
- animation-name: fadeInLeft;
28
- }
29
- .zoomIn {
30
- animation-name: zoomIn;
31
- }
32
- }
33
-
34
- @keyframes fadeOut {
35
- 0% {
36
- opacity: 1;
37
- }
38
-
39
- 100% {
40
- opacity: 0;
41
- }
42
- }
43
-
44
- @keyframes fadeInDown {
45
- from {
46
- opacity: 0;
47
- transform: translate3d(0, -100%, 0)
48
- }
49
- to {
50
- opacity: 1;
51
- transform: none
52
- }
53
- }
54
-
55
- @keyframes fadeInUp {
56
- from {
57
- opacity: 0;
58
- transform: translate3d(0, 100%, 0)
59
- }
60
- to {
61
- opacity: 1;
62
- transform: none
63
- }
64
- }
65
-
66
- @keyframes fadeInRight {
67
- from {
68
- opacity: 0;
69
- transform: translate3d(100%, 0, 0)
70
- }
71
- to {
72
- opacity: 1;
73
- transform: none
74
- }
75
- }
76
-
77
- @keyframes fadeInLeft {
78
- from {
79
- opacity: 0;
80
- transform: translate3d(-100%, 0, 0)
81
- }
82
- to {
83
- opacity: 1;
84
- transform: none
85
- }
86
- }
87
-
88
- @keyframes zoomIn {
89
- from {
90
- opacity: 0;
91
- transform: scale3d(.3, .3, .3)
92
- }
93
- 50% {
94
- opacity: 1
95
- }
96
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/public/_autoheight.scss DELETED
@@ -1,7 +0,0 @@
1
- /*
2
- * Owl Carousel - Auto Height Plugin
3
- */
4
-
5
- .owl-height {
6
- transition: height 500ms ease-in-out;
7
- }
 
 
 
 
 
 
 
assets/src/scss/public/_button.scss DELETED
@@ -1,39 +0,0 @@
1
- .cs-hero-button {
2
- -webkit-appearance: none;
3
- -webkit-font-smoothing: inherit;
4
- display: inline-block;
5
- font-size: 1rem;
6
- line-height: 1;
7
- padding: 0.75em 1em;
8
- border-radius: 0;
9
- text-decoration: none;
10
- text-align: center;
11
- box-sizing: border-box;
12
- transition: all 200ms ease-in-out;
13
-
14
- &:hover {
15
- text-decoration: none;
16
- }
17
-
18
- &--normal {
19
- opacity: 0.9;
20
- filter: alpha(opacity=90);
21
- }
22
-
23
- &--stroke {
24
- background: transparent;
25
- border-width: 1px;
26
- border-style: solid;
27
- border-color: transparent;
28
- }
29
-
30
- &--medium {
31
- font-size: 1.2rem;
32
- padding: 0.9em 1.2em;
33
- }
34
-
35
- &--large {
36
- font-size: 1.5rem;
37
- padding: 0.9em 1.6em;
38
- }
39
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/public/_content-carousel.scss DELETED
@@ -1,162 +0,0 @@
1
- .carousel-slider-hero {
2
- // Cell background
3
- &__cell__background {
4
- background-size: cover;
5
- background-position: center;
6
- background-repeat: no-repeat;
7
- min-width: 100%;
8
- min-height: 100%;
9
- transition-property: transform;
10
- transition-duration: 10s;
11
-
12
- &.carousel-slider-hero-ken-out {
13
- transform: scale(1.3);
14
- }
15
-
16
- // Active Slide
17
- .carousel-slider .active & {
18
- animation-timing-function: linear;
19
- animation-duration: 20s;
20
-
21
- &.carousel-slider-hero-ken-in {
22
- transform: scale(1.3);
23
- animation-name: ken-burns-in;
24
- }
25
-
26
- &.carousel-slider-hero-ken-out {
27
- transform: scale(1);
28
- animation-name: ken-burns-out;
29
- }
30
- }
31
- }
32
-
33
- // Cell
34
- &__cell {
35
- display: flex;
36
- justify-content: center;
37
- align-items: center;
38
- position: relative;
39
- overflow: hidden;
40
- height: 400px;
41
-
42
- &:focus {
43
- outline: 0;
44
- }
45
- }
46
-
47
- // Slide Inner
48
- &__cell__inner {
49
- background-repeat: no-repeat;
50
- background-position: center;
51
- position: absolute;
52
- top: 0;
53
- left: 0;
54
- bottom: 0;
55
- right: 0;
56
- padding: 50px;
57
-
58
- &, &:hover {
59
- color: white;
60
- display: flex;
61
- }
62
- }
63
-
64
- &__cell__background_overlay {
65
- position: absolute;
66
- z-index: 0;
67
- top: 0;
68
- bottom: 0;
69
- left: 0;
70
- right: 0;
71
- }
72
-
73
- &__cell__content {
74
- position: relative;
75
- z-index: 1;
76
- width: 100%;
77
- max-width: 1140px;
78
- }
79
-
80
- &__cell__heading {
81
- font-size: 40px;
82
- font-weight: bold;
83
- line-height: 1;
84
- }
85
-
86
- &__cell__description {
87
- font-size: 20px;
88
- line-height: 1.4;
89
- }
90
-
91
- &__cell__heading:not(:last-child),
92
- &__cell__description:not(:last-child) {
93
- margin-bottom: 30px;
94
- }
95
-
96
- &__cell__button__one {
97
- margin-right: 5px;
98
- }
99
- &__cell__button__two {
100
- margin-left: 5px;
101
- }
102
- &__cell__button__one,
103
- &__cell__button__two {
104
- display: inline-flex;
105
- }
106
- }
107
-
108
- .carousel-slider-hero__cell__inner {
109
- &.carousel-slider--v-position {
110
- &-top {
111
- align-items: flex-start;
112
- }
113
- &-bottom {
114
- align-items: flex-end;
115
- }
116
- &-middle {
117
- align-items: center;
118
- }
119
- }
120
-
121
- &.carousel-slider--h-position {
122
- &-left {
123
- justify-content: flex-start;
124
- }
125
- &-right {
126
- justify-content: flex-end;
127
- }
128
- &-center {
129
- justify-content: center;
130
- }
131
- }
132
-
133
- &.carousel-slider--text {
134
- &-left {
135
- text-align: left;
136
- }
137
- &-right {
138
- text-align: right;
139
- }
140
- &-center {
141
- text-align: center;
142
- }
143
- }
144
- }
145
-
146
- @media (max-width: 767px) {
147
- .carousel-slider-hero__cell__inner {
148
- padding: 30px;
149
- }
150
-
151
- .carousel-slider-hero__cell__heading {
152
- font-size: 24px;
153
- line-height: 1;
154
- margin-bottom: 15px;
155
- }
156
-
157
- .carousel-slider-hero__cell__description {
158
- font-size: 14px;
159
- line-height: 1.4;
160
- margin-bottom: 15px;
161
- }
162
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/public/_core.scss DELETED
@@ -1,109 +0,0 @@
1
- // Owl Carousel - Core
2
- .carousel-slider {
3
- display: none;
4
- width: 100%;
5
- -webkit-tap-highlight-color: transparent;
6
- position: relative;
7
- z-index: 1;
8
-
9
- .owl-stage {
10
- position: relative;
11
- -ms-touch-action: pan-Y;
12
- touch-action: manipulation;
13
- backface-visibility: hidden;
14
-
15
- &:after {
16
- content: ".";
17
- display: block;
18
- clear: both;
19
- visibility: hidden;
20
- line-height: 0;
21
- height: 0;
22
- }
23
- }
24
-
25
- .owl-stage-outer {
26
- position: relative;
27
- overflow: hidden;
28
- transform: translate3d(0px, 0px, 0px);
29
- }
30
- .owl-carousel .owl-wrapper,
31
- .owl-carousel .owl-item {
32
- backface-visibility: hidden;
33
- transform: translate3d(0, 0, 0);
34
- }
35
-
36
- .owl-item {
37
- position: relative;
38
- min-height: 1px;
39
- float: left;
40
- backface-visibility: hidden;
41
- -webkit-tap-highlight-color: transparent;
42
- -webkit-touch-callout: none;
43
- }
44
- .owl-item img {
45
- display: block;
46
- width: 100%;
47
- }
48
-
49
- .owl-nav.disabled,
50
- .owl-dots.disabled {
51
- display: none;
52
- }
53
-
54
- .owl-nav .owl-prev,
55
- .owl-nav .owl-next,
56
- .owl-dot {
57
- cursor: pointer;
58
- user-select: none;
59
- }
60
- .owl-nav button.owl-prev,
61
- .owl-nav button.owl-next,
62
- button.owl-dot {
63
- background: none;
64
- color: inherit;
65
- border: none;
66
- padding: 0 !important;
67
- font: inherit;
68
- }
69
-
70
- &.owl-loaded {
71
- display: block;
72
- }
73
-
74
- &.owl-loading {
75
- opacity: 0;
76
- display: block;
77
- }
78
-
79
- &.owl-hidden {
80
- opacity: 0;
81
- }
82
-
83
- &.owl-refresh .owl-item {
84
- visibility: hidden;
85
- }
86
-
87
- &.owl-drag .owl-item {
88
- touch-action: pan-y;
89
- user-select: none;
90
- }
91
-
92
- &.owl-grab {
93
- cursor: move;
94
- cursor: grab;
95
- }
96
-
97
- &.owl-rtl {
98
- direction: rtl;
99
- }
100
-
101
- &.owl-rtl .owl-item {
102
- float: right;
103
- }
104
- }
105
-
106
- // No Js
107
- .no-js .carousel-slider {
108
- display: block;
109
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/public/_image-carousel.scss DELETED
@@ -1,34 +0,0 @@
1
- .carousel-slider {
2
- // Styling item
3
- .carousel-slider__item {
4
- position: relative;
5
-
6
- img {
7
- display: block;
8
- margin-left: auto;
9
- margin-right: auto;
10
- max-width: 100%;
11
- height: auto;
12
- }
13
- }
14
- .carousel-slider__caption {
15
- position: relative;
16
-
17
- .title {
18
- overflow: hidden;
19
- text-overflow: ellipsis;
20
- color: #474747;
21
- font-size: 16px;
22
- font-weight: 500;
23
- margin: 10px 0 0;
24
- text-align: center;
25
- }
26
-
27
- .caption {
28
- font-size: 14px;
29
- font-weight: 300;
30
- margin: 10px 0 0;
31
- text-align: center;
32
- }
33
- }
34
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/public/_lazyload.scss DELETED
@@ -1,17 +0,0 @@
1
- // Owl Carousel - Lazy Load Plugin
2
- .carousel-slider {
3
- .owl-item {
4
- .owl-lazy {
5
- // opacity: 0;
6
- // transition: opacity 400ms ease;
7
- }
8
-
9
- img.owl-lazy {
10
- // transform-style: preserve-3d;
11
- background: url($ajax-loader-url) no-repeat center;
12
- min-width: 32px;
13
- min-height: 32px;
14
- }
15
- }
16
- }
17
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/public/_magnific-popup.scss DELETED
@@ -1,603 +0,0 @@
1
- /* Magnific Popup CSS */
2
-
3
- ////////////////////////
4
- // Settings //
5
- ////////////////////////
6
-
7
- // overlay
8
- $mfp-overlay-color: #0b0b0b !default; // Color of overlay screen
9
- $mfp-overlay-opacity: 0.8 !default; // Opacity of overlay screen
10
- $mfp-shadow: 0 0 8px rgba(0, 0, 0, 0.6) !default; // Shadow on image or iframe
11
-
12
- // spacing
13
- $mfp-popup-padding-left: 8px !default; // Padding from left and from right side
14
- $mfp-popup-padding-left-mobile: 6px !default; // Same as above, but is applied when width of window is less than 800px
15
-
16
- $mfp-z-index-base: 1040 !default; // Base z-index of popup
17
-
18
- // controls
19
- $mfp-include-arrows: true !default; // Include styles for nav arrows
20
- $mfp-controls-opacity: 0.65 !default; // Opacity of controls
21
- $mfp-controls-color: #FFF !default; // Color of controls
22
- $mfp-controls-border-color: #3F3F3F !default; // Border color of controls
23
- $mfp-inner-close-icon-color: #333 !default; // Color of close button when inside
24
- $mfp-controls-text-color: #CCC !default; // Color of preloader and "1 of X" indicator
25
- $mfp-controls-text-color-hover: #FFF !default; // Hover color of preloader and "1 of X" indicator
26
-
27
- // Iframe-type options
28
- $mfp-include-iframe-type: true !default; // Enable Iframe-type popups
29
- $mfp-iframe-padding-top: 40px !default; // Iframe padding top
30
- $mfp-iframe-background: #000 !default; // Background color of iframes
31
- $mfp-iframe-max-width: 900px !default; // Maximum width of iframes
32
- $mfp-iframe-ratio: 9/16 !default; // Ratio of iframe (9/16 = widescreen, 3/4 = standard, etc.)
33
-
34
- // Image-type options
35
- $mfp-include-image-type: true !default; // Enable Image-type popups
36
- $mfp-image-background: #444 !default;
37
- $mfp-image-padding-top: 40px !default; // Image padding top
38
- $mfp-image-padding-bottom: 40px !default; // Image padding bottom
39
- $mfp-include-mobile-layout-for-image: true !default; // Removes paddings from top and bottom
40
-
41
- // Image caption options
42
- $mfp-caption-title-color: #F3F3F3 !default; // Caption title color
43
- $mfp-caption-subtitle-color: #BDBDBD !default; // Caption subtitle color
44
-
45
- // A11y
46
- $mfp-use-visuallyhidden: false !default; // Hide content from browsers, but make it available for screen readers
47
-
48
- ////////////////////////
49
- //
50
- // Contents:
51
- //
52
- // 1. General styles
53
- // - Transluscent overlay
54
- // - Containers, wrappers
55
- // - Cursors
56
- // - Helper classes
57
- // 2. Appearance
58
- // - Preloader & text that displays error messages
59
- // - CSS reset for buttons
60
- // - Close icon
61
- // - "1 of X" counter
62
- // - Navigation (left/right) arrows
63
- // - Iframe content type styles
64
- // - Image content type styles
65
- // - Media query where size of arrows is reduced
66
- // - IE7 support
67
- //
68
- ////////////////////////
69
-
70
- ////////////////////////
71
- // 1. General styles
72
- ////////////////////////
73
-
74
- // Transluscent overlay
75
- .mfp-bg {
76
- top: 0;
77
- left: 0;
78
- width: 100%;
79
- height: 100%;
80
- z-index: $mfp-z-index-base + 2;
81
- overflow: hidden;
82
- position: fixed;
83
-
84
- background: $mfp-overlay-color;
85
- opacity: $mfp-overlay-opacity;
86
- }
87
-
88
- // Wrapper for popup
89
- .mfp-wrap {
90
- top: 0;
91
- left: 0;
92
- width: 100%;
93
- height: 100%;
94
- z-index: $mfp-z-index-base + 3;
95
- position: fixed;
96
- outline: none !important;
97
- -webkit-backface-visibility: hidden; // fixes webkit bug that can cause "false" scrollbar
98
- }
99
-
100
- // Root container
101
- .mfp-container {
102
- text-align: center;
103
- position: absolute;
104
- width: 100%;
105
- height: 100%;
106
- left: 0;
107
- top: 0;
108
- padding: 0 $mfp-popup-padding-left;
109
- box-sizing: border-box;
110
- }
111
-
112
- // Vertical centerer helper
113
- .mfp-container {
114
- &:before {
115
- content: '';
116
- display: inline-block;
117
- height: 100%;
118
- vertical-align: middle;
119
- }
120
- }
121
-
122
- // Remove vertical centering when popup has class `mfp-align-top`
123
- .mfp-align-top {
124
- .mfp-container {
125
- &:before {
126
- display: none;
127
- }
128
- }
129
- }
130
-
131
- // Popup content holder
132
- .mfp-content {
133
- position: relative;
134
- display: inline-block;
135
- vertical-align: middle;
136
- margin: 0 auto;
137
- text-align: left;
138
- z-index: $mfp-z-index-base + 5;
139
- }
140
-
141
- .mfp-inline-holder,
142
- .mfp-ajax-holder {
143
- .mfp-content {
144
- width: 100%;
145
- cursor: auto;
146
- }
147
- }
148
-
149
- // Cursors
150
- .mfp-ajax-cur {
151
- cursor: progress;
152
- }
153
-
154
- .mfp-zoom-out-cur {
155
- &, .mfp-image-holder .mfp-close {
156
- cursor: -moz-zoom-out;
157
- cursor: -webkit-zoom-out;
158
- cursor: zoom-out;
159
- }
160
- }
161
-
162
- .mfp-zoom {
163
- cursor: pointer;
164
- cursor: -webkit-zoom-in;
165
- cursor: -moz-zoom-in;
166
- cursor: zoom-in;
167
- }
168
-
169
- .mfp-auto-cursor {
170
- .mfp-content {
171
- cursor: auto;
172
- }
173
- }
174
-
175
- .mfp-close,
176
- .mfp-arrow,
177
- .mfp-preloader,
178
- .mfp-counter {
179
- -webkit-user-select: none;
180
- -moz-user-select: none;
181
- user-select: none;
182
- }
183
-
184
- // Hide the image during the loading
185
- .mfp-loading {
186
- &.mfp-figure {
187
- display: none;
188
- }
189
- }
190
-
191
- // Helper class that hides stuff
192
- @if $mfp-use-visuallyhidden {
193
- // From HTML5 Boilerplate https://github.com/h5bp/html5-boilerplate/blob/v4.2.0/doc/css.md#visuallyhidden
194
- .mfp-hide {
195
- border: 0 !important;
196
- clip: rect(0 0 0 0) !important;
197
- height: 1px !important;
198
- margin: -1px !important;
199
- overflow: hidden !important;
200
- padding: 0 !important;
201
- position: absolute !important;
202
- width: 1px !important;
203
- }
204
- } @else {
205
- .mfp-hide {
206
- display: none !important;
207
- }
208
- }
209
-
210
- ////////////////////////
211
- // 2. Appearance
212
- ////////////////////////
213
-
214
- // Preloader and text that displays error messages
215
- .mfp-preloader {
216
- color: $mfp-controls-text-color;
217
- position: absolute;
218
- top: 50%;
219
- width: auto;
220
- text-align: center;
221
- margin-top: -0.8em;
222
- left: 8px;
223
- right: 8px;
224
- z-index: $mfp-z-index-base + 4;
225
- a {
226
- color: $mfp-controls-text-color;
227
- &:hover {
228
- color: $mfp-controls-text-color-hover;
229
- }
230
- }
231
- }
232
-
233
- // Hide preloader when content successfully loaded
234
- .mfp-s-ready {
235
- .mfp-preloader {
236
- display: none;
237
- }
238
- }
239
-
240
- // Hide content when it was not loaded
241
- .mfp-s-error {
242
- .mfp-content {
243
- display: none;
244
- }
245
- }
246
-
247
- // CSS-reset for buttons
248
- button {
249
- &.mfp-close,
250
- &.mfp-arrow {
251
- overflow: visible;
252
- cursor: pointer;
253
- background: transparent;
254
- border: 0;
255
- -webkit-appearance: none;
256
- display: block;
257
- outline: none;
258
- padding: 0;
259
- z-index: $mfp-z-index-base + 6;
260
- box-shadow: none;
261
- touch-action: manipulation;
262
- }
263
- &::-moz-focus-inner {
264
- padding: 0;
265
- border: 0
266
- }
267
- }
268
-
269
- // Close icon
270
- .mfp-close {
271
- width: 44px;
272
- height: 44px;
273
- line-height: 44px;
274
-
275
- position: absolute;
276
- right: 0;
277
- top: 0;
278
- text-decoration: none;
279
- text-align: center;
280
- opacity: $mfp-controls-opacity;
281
- padding: 0 0 18px 10px;
282
- color: $mfp-controls-color;
283
-
284
- font-style: normal;
285
- font-size: 28px;
286
- font-family: Arial, Baskerville, monospace;
287
-
288
- &:hover,
289
- &:focus {
290
- opacity: 1;
291
- }
292
-
293
- &:active {
294
- top: 1px;
295
- }
296
- }
297
-
298
- .mfp-close-btn-in {
299
- .mfp-close {
300
- color: $mfp-inner-close-icon-color;
301
- }
302
- }
303
-
304
- .mfp-image-holder,
305
- .mfp-iframe-holder {
306
- .mfp-close {
307
- color: $mfp-controls-color;
308
- right: -6px;
309
- text-align: right;
310
- padding-right: 6px;
311
- width: 100%;
312
- }
313
- }
314
-
315
- // "1 of X" counter
316
- .mfp-counter {
317
- position: absolute;
318
- top: 0;
319
- right: 0;
320
- color: $mfp-controls-text-color;
321
- font-size: 12px;
322
- line-height: 18px;
323
- white-space: nowrap;
324
- }
325
-
326
- // Navigation arrows
327
- @if $mfp-include-arrows {
328
- .mfp-arrow {
329
- position: absolute;
330
- opacity: $mfp-controls-opacity;
331
- top: 50%;
332
- margin: -55px 0 0;
333
- padding: 0;
334
- width: 90px;
335
- height: 110px;
336
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
337
- &:active {
338
- margin-top: -54px;
339
- }
340
- &:hover,
341
- &:focus {
342
- opacity: 1;
343
- }
344
- &:before,
345
- &:after {
346
- content: '';
347
- display: block;
348
- width: 0;
349
- height: 0;
350
- position: absolute;
351
- left: 0;
352
- top: 0;
353
- margin-top: 35px;
354
- margin-left: 35px;
355
- border: medium inset transparent;
356
- }
357
-
358
- &:after {
359
-
360
- border-top-width: 13px;
361
- border-bottom-width: 13px;
362
- top: 8px;
363
- }
364
-
365
- &:before {
366
- border-top-width: 21px;
367
- border-bottom-width: 21px;
368
- opacity: 0.7;
369
- }
370
-
371
- }
372
-
373
- .mfp-arrow-left {
374
- left: 0;
375
- &:after {
376
- border-right: 17px solid $mfp-controls-color;
377
- margin-left: 31px;
378
- }
379
- &:before {
380
- margin-left: 25px;
381
- border-right: 27px solid $mfp-controls-border-color;
382
- }
383
- }
384
-
385
- .mfp-arrow-right {
386
- right: 0;
387
- &:after {
388
- border-left: 17px solid $mfp-controls-color;
389
- margin-left: 39px
390
- }
391
- &:before {
392
- border-left: 27px solid $mfp-controls-border-color;
393
- }
394
- }
395
- }
396
-
397
- // Iframe content type
398
- @if $mfp-include-iframe-type {
399
- .mfp-iframe-holder {
400
- padding-top: $mfp-iframe-padding-top;
401
- padding-bottom: $mfp-iframe-padding-top;
402
- .mfp-content {
403
- line-height: 0;
404
- width: 100%;
405
- max-width: $mfp-iframe-max-width;
406
- }
407
- .mfp-close {
408
- top: -40px;
409
- }
410
- }
411
- .mfp-iframe-scaler {
412
- width: 100%;
413
- height: 0;
414
- overflow: hidden;
415
- padding-top: $mfp-iframe-ratio * 100%;
416
- iframe {
417
- position: absolute;
418
- display: block;
419
- top: 0;
420
- left: 0;
421
- width: 100%;
422
- height: 100%;
423
- box-shadow: $mfp-shadow;
424
- background: $mfp-iframe-background;
425
- }
426
- }
427
- }
428
-
429
- // Image content type
430
- @if $mfp-include-image-type {
431
-
432
- /* Main image in popup */
433
- img {
434
- &.mfp-img {
435
- width: auto;
436
- max-width: 100%;
437
- height: auto;
438
- display: block;
439
- line-height: 0;
440
- box-sizing: border-box;
441
- padding: $mfp-image-padding-top 0 $mfp-image-padding-bottom;
442
- margin: 0 auto;
443
- }
444
- }
445
-
446
- /* The shadow behind the image */
447
- .mfp-figure {
448
- line-height: 0;
449
- &:after {
450
- content: '';
451
- position: absolute;
452
- left: 0;
453
- top: $mfp-image-padding-top;
454
- bottom: $mfp-image-padding-bottom;
455
- display: block;
456
- right: 0;
457
- width: auto;
458
- height: auto;
459
- z-index: -1;
460
- box-shadow: $mfp-shadow;
461
- background: $mfp-image-background;
462
- }
463
- small {
464
- color: $mfp-caption-subtitle-color;
465
- display: block;
466
- font-size: 12px;
467
- line-height: 14px;
468
- }
469
- figure {
470
- margin: 0;
471
- }
472
- }
473
- .mfp-bottom-bar {
474
- margin-top: -$mfp-image-padding-bottom + 4;
475
- position: absolute;
476
- top: 100%;
477
- left: 0;
478
- width: 100%;
479
- cursor: auto;
480
- }
481
- .mfp-title {
482
- text-align: left;
483
- line-height: 18px;
484
- color: $mfp-caption-title-color;
485
- word-wrap: break-word;
486
- padding-right: 36px; // leave some space for counter at right side
487
- }
488
-
489
- .mfp-image-holder {
490
- .mfp-content {
491
- max-width: 100%;
492
- }
493
- }
494
-
495
- .mfp-gallery {
496
- .mfp-image-holder {
497
- .mfp-figure {
498
- cursor: pointer;
499
- }
500
- }
501
- }
502
-
503
- @if $mfp-include-mobile-layout-for-image {
504
- @media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
505
- /**
506
- * Remove all paddings around the image on small screen
507
- */
508
- .mfp-img-mobile {
509
- .mfp-image-holder {
510
- padding-left: 0;
511
- padding-right: 0;
512
- }
513
- img {
514
- &.mfp-img {
515
- padding: 0;
516
- }
517
- }
518
- .mfp-figure {
519
- // The shadow behind the image
520
- &:after {
521
- top: 0;
522
- bottom: 0;
523
- }
524
- small {
525
- display: inline;
526
- margin-left: 5px;
527
- }
528
- }
529
- .mfp-bottom-bar {
530
- background: rgba(0, 0, 0, 0.6);
531
- bottom: 0;
532
- margin: 0;
533
- top: auto;
534
- padding: 3px 5px;
535
- position: fixed;
536
- box-sizing: border-box;
537
- &:empty {
538
- padding: 0;
539
- }
540
- }
541
- .mfp-counter {
542
- right: 5px;
543
- top: 3px;
544
- }
545
- .mfp-close {
546
- top: 0;
547
- right: 0;
548
- width: 35px;
549
- height: 35px;
550
- line-height: 35px;
551
- background: rgba(0, 0, 0, 0.6);
552
- position: fixed;
553
- text-align: center;
554
- padding: 0;
555
- }
556
- }
557
- }
558
- }
559
- }
560
-
561
- // Scale navigation arrows and reduce padding from sides
562
- @media all and (max-width: 900px) {
563
- .mfp-arrow {
564
- -webkit-transform: scale(0.75);
565
- transform: scale(0.75);
566
- }
567
- .mfp-arrow-left {
568
- -webkit-transform-origin: 0;
569
- transform-origin: 0;
570
- }
571
- .mfp-arrow-right {
572
- -webkit-transform-origin: 100%;
573
- transform-origin: 100%;
574
- }
575
- .mfp-container {
576
- padding-left: $mfp-popup-padding-left-mobile;
577
- padding-right: $mfp-popup-padding-left-mobile;
578
- }
579
- }
580
-
581
- .mfp-with-zoom .mfp-container,
582
- .mfp-with-zoom.mfp-bg {
583
- opacity: 0;
584
- -webkit-backface-visibility: hidden;
585
- /* ideally, transition speed should match zoom duration */
586
- -webkit-transition: all 0.3s ease-out;
587
- -moz-transition: all 0.3s ease-out;
588
- -o-transition: all 0.3s ease-out;
589
- transition: all 0.3s ease-out;
590
- }
591
-
592
- .mfp-with-zoom.mfp-ready .mfp-container {
593
- opacity: 1;
594
- }
595
-
596
- .mfp-with-zoom.mfp-ready.mfp-bg {
597
- opacity: 0.8;
598
- }
599
-
600
- .mfp-with-zoom.mfp-removing .mfp-container,
601
- .mfp-with-zoom.mfp-removing.mfp-bg {
602
- opacity: 0;
603
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/public/_post-carousel.scss DELETED
@@ -1,100 +0,0 @@
1
- .carousel-slider {
2
-
3
- &[data-slide-type="post-carousel"] {
4
- .owl-stage {
5
- display: flex;
6
- flex-wrap: wrap;
7
- }
8
-
9
- .owl-item {
10
- display: flex;
11
- height: auto;
12
- }
13
- }
14
-
15
- &__post {
16
- border-radius: 4px;
17
- box-shadow: 0 1px 2px rgba(#000, 0.1), 0 0 0 1px rgba(#000, 0.1);
18
- margin: 2px;
19
- position: relative;
20
- width: 100%;
21
-
22
- &-content {
23
- display: flex;
24
- flex-direction: column;
25
- height: 100%;
26
- justify-content: space-between;
27
- }
28
-
29
- &-image {
30
- background-color: #f1f1f1;
31
- background-size: cover;
32
- background-position: center center;
33
- border-top-left-radius: 4px;
34
- border-top-right-radius: 4px;
35
- display: block;
36
- line-height: 0;
37
- margin: 0 auto;
38
- overflow: hidden;
39
- padding-top: 66.6666%; // 3by2
40
- position: relative;
41
- text-align: center;
42
- width: 100%;
43
- }
44
-
45
- &-title {
46
- display: block;
47
- margin: 1rem;
48
- min-height: 3.75em;
49
-
50
- h1 {
51
- font-size: 1.25rem;
52
- margin: 0;
53
- }
54
- }
55
-
56
- &-excerpt {
57
- font-size: 1rem;
58
- line-height: 1.6;
59
- margin: 1rem 1rem 2rem;
60
- text-align: left;
61
- }
62
-
63
- &-meta {
64
- align-items: flex-end;
65
- display: flex;
66
- font-size: 0.75rem;
67
- justify-content: space-between;
68
- margin: auto 1rem 1rem;
69
- }
70
-
71
- &-publication-meta {
72
- display: block;
73
- overflow: hidden;
74
- text-overflow: ellipsis;
75
- white-space: nowrap;
76
- }
77
-
78
- &-author {
79
- display: block;
80
- font-style: normal;
81
- line-height: 1.6;
82
- overflow: hidden;
83
- text-overflow: ellipsis;
84
- white-space: nowrap;
85
-
86
- &-link {
87
- display: inline-block;
88
- max-width: 175px;
89
- overflow: hidden;
90
- text-overflow: ellipsis;
91
- vertical-align: middle;
92
- white-space: nowrap;
93
- }
94
- }
95
-
96
- &-category {
97
- text-transform: uppercase;
98
- }
99
- }
100
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/public/_post-carousel2.scss DELETED
@@ -1,63 +0,0 @@
1
- .carousel-slider {
2
- .blog-grid-inside {
3
- display: flex;
4
- flex-direction: column;
5
- height: 100%;
6
- border-radius: 3px;
7
- border: 1px solid rgba(#000, 0.1);
8
-
9
- .post-thumbnail {
10
- margin: 0;
11
- padding: 0;
12
-
13
- img {
14
- width: 100%;
15
- height: auto;
16
- }
17
- }
18
- .entry-header {
19
- margin: 1rem;
20
- padding: 0;
21
- border: none;
22
- }
23
- .cat-links {
24
- display: block;
25
- margin-top: 0;
26
- margin-bottom: .5rem;
27
- line-height: 1.25;
28
- }
29
- .entry-title {
30
- margin: 0;
31
- padding: 0;
32
- font-size: 1.25rem;
33
- overflow-wrap: break-word;
34
- }
35
- .entry-summary {
36
- margin: 0 1rem 1rem;
37
- overflow-wrap: break-word;
38
- }
39
- .tags-links {
40
- margin: 0 1rem 1rem;
41
- }
42
- .entry-footer {
43
- margin: 0 1em 1.25rem;
44
- overflow: hidden;
45
- }
46
- .byline,
47
- .posted-on {
48
- float: left;
49
- font-size: .875rem;
50
- line-height: 1.33;
51
- }
52
- .vcard img {
53
- display: inline-block;
54
- width: auto;
55
- }
56
- .posted-on {
57
- float: right;
58
- }
59
- .published:not(.updated) {
60
- display: none;
61
- }
62
- }
63
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/public/_product-carousel.scss DELETED
@@ -1,197 +0,0 @@
1
- @import "../utilities/mixins";
2
-
3
- $text-color: #333333;
4
- $btn-color: #f1f1f1;
5
- $btn-background: #96588a;
6
-
7
- .carousel-slider {
8
- &[data-slide-type="product-carousel"] {
9
- .owl-stage {
10
- display: flex;
11
- flex-wrap: wrap;
12
- }
13
-
14
- .owl-item {
15
- display: flex;
16
- height: auto;
17
- }
18
- }
19
-
20
- .woocommerce-loop-category__title {
21
- font-size: 1.25rem;
22
- margin: 1rem;
23
- }
24
-
25
- &__product {
26
- position: relative;
27
- text-align: center;
28
- box-shadow: 0 1px 2px rgba(#000, 0.1), 0 0 0 1px rgba(#000, 0.1);
29
- margin: 2px;
30
- width: 100%;
31
-
32
- .woocommerce-LoopProduct-link {
33
- display: block;
34
- overflow: hidden;
35
- margin: 0;
36
- }
37
-
38
- .onsale {
39
- border: 0 none;
40
- line-height: 1;
41
- margin: 0;
42
- padding: 0.5rem;
43
- color: $btn-color;
44
- background-color: $btn-background;
45
- position: absolute;
46
- left: 1rem;
47
- top: 1rem;
48
- }
49
-
50
- h3 {
51
- padding: 0;
52
- text-align: left;
53
- margin: 1rem;
54
- font-size: 1.25rem;
55
- color: $text-color;
56
- }
57
-
58
- a {
59
- text-decoration: none;
60
- box-shadow: none;
61
-
62
- img {
63
- width: 100%;
64
- height: auto;
65
- display: block;
66
- box-shadow: none;
67
- }
68
- }
69
-
70
- strong {
71
- display: block;
72
- }
73
-
74
- // Price
75
- .price {
76
- color: $text-color;
77
- display: inline-block;
78
- font-weight: normal;
79
- margin: 0 0.5rem 0 1rem;
80
- font-size: .875rem;
81
- float: left;
82
-
83
- del {
84
- color: inherit;
85
- background-color: transparent;
86
- opacity: 0.5;
87
- display: inline-block;
88
- }
89
-
90
- ins {
91
- color: inherit;
92
- background-color: transparent;
93
- font-weight: bold;
94
- }
95
- }
96
-
97
- // Star ratings
98
- .star-rating {
99
- display: inline-block;
100
- margin: 0 1rem 0 0.5rem;
101
- float: right;
102
- overflow: hidden;
103
- position: relative;
104
- height: 1em;
105
- line-height: 1;
106
- font-size: 1em;
107
- width: 5.4em;
108
- font-family: 'star';
109
-
110
- &:before {
111
- content: "\73\73\73\73\73";
112
- float: left;
113
- top: 0;
114
- left: 0;
115
- position: absolute;
116
- }
117
-
118
- span {
119
- overflow: hidden;
120
- float: left;
121
- top: 0;
122
- left: 0;
123
- position: absolute;
124
- padding-top: 1.5em;
125
-
126
- &:before {
127
- color: $btn-background;
128
- content: "\53\53\53\53\53";
129
- top: 0;
130
- position: absolute;
131
- left: 0;
132
- }
133
- }
134
- }
135
-
136
- a.add_to_cart_button,
137
- a.added_to_cart,
138
- a.quick_view {
139
- color: $btn-color;
140
- background-color: $btn-background;
141
- margin: 1rem;
142
- line-height: 1;
143
- cursor: pointer;
144
- position: relative;
145
- text-decoration: none;
146
- overflow: visible;
147
- padding: .5em 1em;
148
- font-weight: normal;
149
- border-radius: 3px;
150
- left: auto;
151
- border: 0;
152
- white-space: nowrap;
153
- display: block;
154
- background-image: none;
155
- box-shadow: none;
156
- -webkit-box-shadow: none;
157
- text-shadow: none;
158
-
159
- &:hover {
160
- color: $btn-color;
161
- background-color: $btn-background;
162
- text-decoration: none;
163
- background-image: none;
164
- }
165
- }
166
-
167
- // Buttons
168
- a.add_to_cart_button {
169
-
170
- &.loading {
171
- opacity: 0.25;
172
- padding-right: 2.618em;
173
-
174
- &:after {
175
- font-family: "WooCommerce";
176
- content: "\e01c";
177
- vertical-align: top;
178
- -webkit-font-smoothing: antialiased;
179
- font-weight: normal;
180
- position: absolute;
181
- top: .618em;
182
- right: 1em;
183
- animation: spin 2s linear infinite;
184
- }
185
- }
186
-
187
- &.added {
188
- &:after {
189
- font-family: 'WooCommerce';
190
- content: "\e017";
191
- margin-left: .53em;
192
- vertical-align: bottom;
193
- }
194
- }
195
- }
196
- }
197
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/public/_product_modal.scss DELETED
@@ -1,197 +0,0 @@
1
- .mfp-content {
2
-
3
- .product {
4
- background-color: #ffffff;
5
- display: table;
6
- margin: 0 auto;
7
- padding: 15px;
8
-
9
- .images {
10
- display: inline-block;
11
- float: left;
12
- max-width: 600px;
13
-
14
- img {
15
- display: block;
16
- }
17
- }
18
-
19
- .onsale {
20
- left: 24px;
21
- top: 24px;
22
- position: absolute;
23
- }
24
-
25
- .summary {
26
- display: inline-block;
27
- margin-left: 15px;
28
- width: 300px;
29
- }
30
-
31
- .product_title,
32
- .description {
33
- margin: 1em 0;
34
- }
35
-
36
- // Price
37
- .price {
38
- // color: $text-color;
39
- display: inline-block;
40
- font-weight: normal;
41
- margin: .5em 1em;
42
- font-size: .857em;
43
- float: left;
44
-
45
- del {
46
- color: inherit;
47
- background-color: transparent;
48
- opacity: 0.5;
49
- display: inline-block;
50
- }
51
-
52
- ins {
53
- color: inherit;
54
- background-color: transparent;
55
- font-weight: bold;
56
- }
57
- }
58
-
59
- // Star ratings
60
- .star-rating {
61
- // color: $btn-background;
62
- display: inline-block;
63
- margin: .5em 1em;
64
- float: right;
65
- overflow: hidden;
66
- position: relative;
67
- height: 1em;
68
- line-height: 1;
69
- font-size: 1em;
70
- width: 5.4em;
71
- font-family: 'star';
72
-
73
- &:before {
74
- content: "\73\73\73\73\73";
75
- float: left;
76
- top: 0;
77
- left: 0;
78
- position: absolute;
79
- }
80
-
81
- span {
82
- overflow: hidden;
83
- float: left;
84
- top: 0;
85
- left: 0;
86
- position: absolute;
87
- padding-top: 1.5em;
88
- }
89
-
90
- span:before {
91
- content: "\53\53\53\53\53";
92
- top: 0;
93
- position: absolute;
94
- left: 0;
95
- }
96
- }
97
-
98
- // Buttons
99
-
100
- a.add_to_cart_button,
101
- a.added_to_cart {
102
- // color: $btn-color;
103
- // background-color: $btn-background;
104
- margin: 0;
105
- line-height: 1;
106
- cursor: pointer;
107
- position: relative;
108
- text-decoration: none;
109
- overflow: visible;
110
- padding: .5em 1em;
111
- font-weight: normal;
112
- border-radius: 3px;
113
- left: auto;
114
- border: 0;
115
- white-space: nowrap;
116
- display: inline-block;
117
- background-image: none;
118
- box-shadow: none;
119
- -webkit-box-shadow: none;
120
- text-shadow: none;
121
-
122
- &:hover {
123
- // color: $btn-color;
124
- // background-color: $btn-background;
125
- text-decoration: none;
126
- background-image: none;
127
- }
128
- }
129
- a.add_to_cart_button {
130
-
131
- &.loading {
132
- opacity: 0.25;
133
- padding-right: 2.618em;
134
-
135
- &:after {
136
- font-family: "WooCommerce";
137
- content: "\e01c";
138
- vertical-align: top;
139
- -webkit-font-smoothing: antialiased;
140
- font-weight: normal;
141
- position: absolute;
142
- top: .618em;
143
- right: 1em;
144
- -webkit-animation: spin 2s linear infinite;
145
- -moz-animation: spin 2s linear infinite;
146
- animation: spin 2s linear infinite;
147
- }
148
- }
149
-
150
- &.added {
151
- &:after {
152
- font-family: 'WooCommerce';
153
- content: "\e017";
154
- margin-left: .53em;
155
- vertical-align: bottom;
156
- }
157
- }
158
- }
159
- }
160
- }
161
-
162
- .mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content {
163
- max-width: 945px;
164
- margin-top: 40px;
165
- margin-bottom: 40px;
166
- }
167
-
168
- @media ( max-width: 600px ) {
169
- .mfp-content {
170
- .product {
171
- .images {
172
- margin-bottom: 30px;
173
- }
174
- .summary {
175
- display: block;
176
- margin: 0;
177
- width: 100%;
178
- }
179
- }
180
- }
181
- }
182
-
183
- @media ( min-width: 601px ) {
184
- .mfp-content {
185
- .product {
186
- .images {
187
- display: inline-block;
188
- width: 49%;
189
- }
190
- .summary {
191
- display: inline-block;
192
- margin: 0 0 0 1%;
193
- width: 49%;
194
- }
195
- }
196
- }
197
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/public/_theme.scss DELETED
@@ -1,136 +0,0 @@
1
- .carousel-slider {
2
-
3
- // Styling Next and Prev buttons
4
- .owl-nav {
5
- .owl-prev,
6
- .owl-next {
7
- height: 48px;
8
- width: 48px;
9
- display: inline-block;
10
- position: absolute;
11
- top: 50%;
12
- transform: translateY(-50%);
13
- opacity: 0;
14
- margin: 0;
15
- padding: 0;
16
- transition: all .3s ease-in-out;
17
- }
18
-
19
- .owl-prev {
20
- left: 0;
21
- }
22
-
23
- .owl-next {
24
- right: 0;
25
- }
26
- }
27
-
28
- &:hover {
29
- .owl-nav {
30
- .owl-prev,
31
- .owl-next {
32
- opacity: 1;
33
- }
34
- }
35
- }
36
-
37
- &.arrows-visible-always {
38
- .owl-prev,
39
- .owl-next {
40
- opacity: 1;
41
- }
42
- }
43
-
44
- &.arrows-outside {
45
- .owl-nav {
46
- .owl-prev {
47
- left: -48px;
48
- }
49
-
50
- .owl-next {
51
- right: -48px;
52
- }
53
- }
54
- }
55
-
56
- // Styling dots
57
- .owl-dots {
58
- text-align: center;
59
- -webkit-tap-highlight-color: transparent;
60
- margin-top: 10px;
61
-
62
- .owl-dot {
63
- display: inline-block;
64
- zoom: 1;
65
- *display: inline;
66
-
67
- span {
68
- width: 10px;
69
- height: 10px;
70
- margin: 4px 8px;
71
- background-color: $background-color;
72
- display: block;
73
- -webkit-backface-visibility: visible;
74
- transition: opacity 200ms ease;
75
- }
76
-
77
- &.active,
78
- &:hover {
79
- span {
80
- background-color: $background-hover-color;
81
- }
82
- }
83
- }
84
- }
85
-
86
- // Dots positions
87
- &.dots-center {
88
- .owl-dots {
89
- text-align: center;
90
- }
91
- }
92
- &.dots-left {
93
- .owl-dots {
94
- text-align: left;
95
-
96
- &:first-child {
97
- span {
98
- margin-left: 0;
99
- }
100
- }
101
- }
102
- }
103
- &.dots-right {
104
- .owl-dots {
105
- text-align: right;
106
-
107
- &:last-child {
108
- span {
109
- margin-right: 0;
110
- }
111
- }
112
- }
113
- }
114
-
115
- // Dots visibility
116
- &.dots-visible-hover {
117
- .owl-dots {
118
- opacity: 0;
119
- }
120
-
121
- &:hover .owl-dots {
122
- opacity: 1;
123
- }
124
- }
125
-
126
- // Dots shape
127
- &.dots-circle {
128
- .owl-dots {
129
- .owl-dot {
130
- span {
131
- border-radius: 9999px;
132
- }
133
- }
134
- }
135
- }
136
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/public/_variables.scss DELETED
@@ -1,5 +0,0 @@
1
- // Variables
2
- $background-color : #9e9e9e;
3
- $background-hover-color : #4caf50;
4
- $owl-video-play-icon : "#{$imagePath}play.svg";
5
- $ajax-loader-url : "#{$imagePath}ajax-loader.gif";
 
 
 
 
 
assets/src/scss/public/_video.scss DELETED
@@ -1,38 +0,0 @@
1
- // Owl Carousel - Video Plugin
2
- .carousel-slider {
3
-
4
- .carousel-slider-video-wrapper {
5
- position: relative;
6
- height: 100%;
7
- background: #000;
8
- }
9
-
10
- .carousel-slider-video-play-icon {
11
- position: absolute;
12
- height: 40px;
13
- width: 40px;
14
- left: 50%;
15
- top: 50%;
16
- margin-left: -20px;
17
- margin-top: -20px;
18
- background: url($owl-video-play-icon) no-repeat;
19
- cursor: pointer;
20
- z-index: 2;
21
- -webkit-backface-visibility: hidden;
22
- transition: transform 100ms ease;
23
- }
24
-
25
- .carousel-slider-video-overlay {
26
- position: absolute;
27
- height: 100%;
28
- width: 100%;
29
- left: 0;
30
- top: 0;
31
- background-color: rgba(#000000, 0.5);
32
- z-index: 1;
33
- }
34
-
35
- .carousel-slider-video-play-icon:hover {
36
- transform: scale(1.3, 1.3);
37
- }
38
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/utilities/_mixins.scss DELETED
@@ -1,84 +0,0 @@
1
- @mixin overlay($offset: 0) {
2
- bottom: $offset;
3
- left: $offset;
4
- position: absolute;
5
- right: $offset;
6
- top: $offset;
7
- }
8
-
9
- @mixin delete {
10
- user-select: none;
11
- -moz-appearance: none;
12
- -webkit-appearance: none;
13
- background-color: rgba($black, 0.2);
14
- border: none;
15
- border-radius: 32px;
16
- cursor: pointer;
17
- display: inline-block;
18
- flex-grow: 0;
19
- flex-shrink: 0;
20
- font-size: $size-normal;
21
- outline: none;
22
- position: relative;
23
- vertical-align: top;
24
- height: 20px;
25
- width: 20px;
26
-
27
- &:before,
28
- &:after {
29
- background-color: $white;
30
- content: "";
31
- display: block;
32
- left: 50%;
33
- position: absolute;
34
- top: 50%;
35
- transform: translateX(-50%) translateY(-50%) rotate(45deg);
36
- transform-origin: center center;
37
- }
38
-
39
- &:before {
40
- height: 2px;
41
- width: 50%;
42
- }
43
-
44
- &:after {
45
- height: 50%;
46
- width: 2px;
47
- }
48
-
49
- &:hover,
50
- &:focus {
51
- background-color: rgba($black, 0.3);
52
- }
53
-
54
- &:active {
55
- background-color: rgba($black, 0.4);
56
- }
57
-
58
- // Sizes
59
- &.is-small {
60
- height: 16px;
61
- width: 16px;
62
- }
63
-
64
- &.is-medium {
65
- height: 24px;
66
- width: 24px;
67
- }
68
-
69
- &.is-large {
70
- height: 32px;
71
- width: 32px;
72
- }
73
- }
74
-
75
- // Focus shadow mixin.
76
- @mixin focus-shadow() {
77
- box-shadow: 0 0 8px rgba(0, 0, 0, .18), 0 8px 16px rgba(0, 0, 0, .36);
78
- }
79
-
80
- @mixin shadow-2dp() {
81
- box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),
82
- 0 3px 1px -2px rgba(0, 0, 0, 0.2),
83
- 0 1px 5px 0 rgba(0, 0, 0, 0.12);
84
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/src/scss/utilities/_variables.scss DELETED
@@ -1,145 +0,0 @@
1
- // == Colors
2
- // Start with assigning color names to specific hex values.
3
-
4
- $black: #000000 !default;
5
- $grey-darker: #212121 !default;
6
- $grey-dark: #616161 !default;
7
- $grey: #9e9e9e !default;
8
- $grey-light: #e0e0e0 !default;
9
- $grey-lighter: #f5f5f5 !default;
10
- $white: #ffffff !default;
11
- $teal: #009688 !default;
12
- $blue: #2196f3 !default;
13
- $green: #4caf50 !default;
14
- $yellow: #ffeb3b !default;
15
- $amber: #ffc107 !default;
16
- $orange: #ff9800 !default;
17
- $red: #f44336 !default;
18
- $purple: #9c27b0 !default;
19
- $turquoise: #00d1b2 !default;
20
- $pink: #e91e63 !default;
21
-
22
- // Reassign color vars to semantic color scheme
23
- $primary: $teal !default;
24
- $info: $blue !default;
25
- $success: $green !default;
26
- $warning: $amber !default;
27
- $danger: $red !default;
28
- $light: $grey-lighter !default;
29
- $dark: $grey-darker !default;
30
-
31
- $colors: (
32
- 'teal': $teal,
33
- 'blue': $blue,
34
- 'green': $green,
35
- 'yellow': $yellow,
36
- 'amber': $amber,
37
- 'orange': $orange,
38
- 'red': $red,
39
- 'purple': $purple,
40
- 'turquoise': $turquoise,
41
- 'pink': $pink,
42
- 'white': $white,
43
- 'light': $grey-lighter,
44
- 'grey-light': $grey-light,
45
- 'grey': $grey,
46
- 'grey-dark': $grey-dark,
47
- 'dark': $grey-darker,
48
- 'black': $black,
49
- );
50
-
51
- // General colors
52
- $background: $grey-lighter !default;
53
-
54
- $border: $grey-lighter !default;
55
- $border-hover: $grey-light !default;
56
-
57
- //== Link colors
58
- $link: $primary !default;
59
- $link-invert: $primary !default;
60
- $link-visited: $purple !default;
61
-
62
- $link-hover: $grey-darker !default;
63
- $link-hover-border: $grey-light !default;
64
-
65
- $link-focus: $grey-darker !default;
66
- $link-focus-border: $primary !default;
67
-
68
- $link-active: $grey-darker !default;
69
- $link-active-border: $grey-dark !default;
70
-
71
- //== Button
72
- $button: $grey-darker !default;
73
- $button-background: $white !default;
74
- $button-border: $grey-lighter !default;
75
-
76
- $button-hover: $link-hover !default;
77
- $button-hover-border: $link-hover-border !default;
78
-
79
- $button-focus: $link-focus !default;
80
- $button-focus-border: $link-focus-border !default;
81
-
82
- $button-active: $link-active !default;
83
- $button-active-border: $link-active-border !default;
84
-
85
- $button-shadow-inset: inset 0 1px 2px rgba($black, 0.2) !default;
86
-
87
- // Typography
88
- $family-sans-serif: BlinkMacSystemFont, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif !default;
89
- $family-monospace: monospace !default;
90
-
91
- $family-primary: $family-sans-serif !default;
92
- $family-code: $family-monospace !default;
93
-
94
- $size-1: 3rem !default;
95
- $size-2: 2.5rem !default;
96
- $size-3: 2rem !default;
97
- $size-4: 1.5rem !default;
98
- $size-5: 1.25rem !default;
99
- $size-6: 1rem !default;
100
- $size-7: 0.75rem !default;
101
-
102
- $size-small: $size-7 !default;
103
- $size-normal: $size-6 !default;
104
- $size-medium: $size-5 !default;
105
- $size-large: $size-4 !default;
106
-
107
- $weight-light: 300 !default;
108
- $weight-normal: 400 !default;
109
- $weight-semibold: 500 !default;
110
- $weight-bold: 700 !default;
111
-
112
- // Text colors
113
- $text: $grey-dark !default;
114
- $text-invert: $text !default;
115
- $text-light: $grey !default;
116
- $text-strong: $grey-darker !default;
117
-
118
- // Miscellaneous
119
- $radius-small: 2px !default;
120
- $radius: 3px !default;
121
- $radius-large: 5px !default;
122
-
123
- //== Grid breakpoints
124
- $screen-sm: 576px !default;
125
- $screen-md: 769px !default;
126
- $screen-lg: 1000px !default;
127
- $screen-xl: 1192px !default;
128
- $screen-hd: 1384px !default;
129
-
130
- //== Grid containers
131
- $container-sm: 540px !default;
132
- $container-md: 720px !default;
133
- $container-lg: 960px !default;
134
- $container-xl: 1140px !default;
135
- $container-hd: 1340px !default;
136
-
137
- // Responsiveness
138
- // 960, 1152, and 1344 have been chosen because they are divisible by both 12 and 16
139
- $tablet: 769px !default;
140
- // 960px container + 40px
141
- $desktop: 1000px !default;
142
- // 1152px container + 40
143
- $widescreen: 1192px !default;
144
- // 1344px container + 40
145
- $fullhd: 1384px !default;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
carousel-slider.php CHANGED
@@ -3,14 +3,15 @@
3
  * Plugin Name: Carousel Slider
4
  * Plugin URI: http://wordpress.org/plugins/carousel-slider
5
  * Description: <strong>Carousel Slider</strong> allows you to create beautiful, touch enabled, responsive carousels and sliders. It let you create SEO friendly Image carousel from Media Library or from custom URL, Video carousel using Youtube and Vimeo video, Post carousel, Hero banner slider and various types of WooCommerce products carousels.
6
- * Version: 1.9.5
7
  * Author: Sayful Islam
8
  * Author URI: https://sayfulislam.com
9
- * Requires at least: 4.8
10
- * Tested up to: 5.6
 
11
  *
12
- * WC requires at least: 3.0
13
- * WC tested up to: 4.8
14
  *
15
  * Text Domain: carousel-slider
16
  *
@@ -48,14 +49,14 @@ if ( ! class_exists( 'Carousel_Slider' ) ) {
48
  *
49
  * @var string
50
  */
51
- private $version = '1.9.4';
52
 
53
  /**
54
  * Minimum PHP version required
55
  *
56
  * @var string
57
  */
58
- private $min_php = '5.6.0';
59
 
60
  /**
61
  * The instance of the class
@@ -75,8 +76,12 @@ if ( ! class_exists( 'Carousel_Slider' ) ) {
75
  if ( is_null( self::$instance ) ) {
76
  self::$instance = new self();
77
 
 
78
  self::$instance->define_constants();
79
 
 
 
 
80
  // Check if PHP version is supported for our plugin
81
  if ( ! self::$instance->is_supported_php() ) {
82
  register_activation_hook( __FILE__, array( self::$instance, 'auto_deactivate' ) );
@@ -85,6 +90,9 @@ if ( ! class_exists( 'Carousel_Slider' ) ) {
85
  return self::$instance;
86
  }
87
 
 
 
 
88
  self::$instance->includes();
89
 
90
  register_activation_hook( __FILE__, array( self::$instance, 'activation' ) );
@@ -100,6 +108,7 @@ if ( ! class_exists( 'Carousel_Slider' ) ) {
100
  * Define plugin constants
101
  */
102
  public function define_constants() {
 
103
  define( 'CAROUSEL_SLIDER_VERSION', $this->version );
104
  define( 'CAROUSEL_SLIDER_POST_TYPE', $this->post_type );
105
  define( 'CAROUSEL_SLIDER_FILE', __FILE__ );
@@ -112,45 +121,49 @@ if ( ! class_exists( 'Carousel_Slider' ) ) {
112
  }
113
 
114
  /**
115
- * Define constant if not already set.
116
- *
117
- * @param string $name
118
- * @param string|bool $value
119
  */
120
- private function define( $name, $value ) {
121
- if ( ! defined( $name ) ) {
122
- define( $name, $value );
 
 
 
 
 
 
 
 
 
 
 
 
123
  }
124
  }
125
 
 
 
 
 
 
 
 
 
 
126
  /**
127
  * Include admin and front facing files
128
  */
129
  private function includes() {
130
- require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-i18n.php';
131
  require_once CAROUSEL_SLIDER_INCLUDES . '/functions-carousel-slider.php';
132
  require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-activator.php';
133
  require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-product.php';
134
- require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-script.php';
135
- require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-preview.php';
136
- require_once CAROUSEL_SLIDER_WIDGETS . '/widget-carousel_slider.php';
137
 
138
  if ( $this->is_request( 'admin' ) ) {
139
- require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-setting-api.php';
140
- require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-setting.php';
141
- require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-credit.php';
142
- require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-documentation.php';
143
- require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-vc-element.php';
144
  require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-form.php';
145
  require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-admin.php';
146
  require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-meta-box.php';
147
  require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-hero-carousel.php';
148
- require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-gutenberg-block.php';
149
  }
150
-
151
- require_once CAROUSEL_SLIDER_PATH . '/shortcodes/class-carousel-slider-shortcode.php';
152
- require_once CAROUSEL_SLIDER_PATH . '/shortcodes/class-carousel-slider-deprecated-shortcode.php';
153
- require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-structured-data.php';
154
  }
155
 
156
  /**
@@ -158,8 +171,7 @@ if ( ! class_exists( 'Carousel_Slider' ) ) {
158
  * @return void
159
  */
160
  public function activation() {
161
- do_action( 'carousel_slider_activation' );
162
- flush_rewrite_rules();
163
  }
164
 
165
  /**
@@ -167,8 +179,7 @@ if ( ! class_exists( 'Carousel_Slider' ) ) {
167
  * @return void
168
  */
169
  public function deactivation() {
170
- do_action( 'carousel_slider_deactivation' );
171
- flush_rewrite_rules();
172
  }
173
 
174
  /**
@@ -186,9 +197,9 @@ if ( ! class_exists( 'Carousel_Slider' ) ) {
186
  $error .= sprintf( __( 'The Carousel Slider plugin requires PHP version %s or greater.',
187
  'carousel-slider' ), $this->min_php );
188
  ?>
189
- <div class="error">
190
- <p><?php printf( $error ); ?></p>
191
- </div>
192
  <?php
193
  }
194
 
3
  * Plugin Name: Carousel Slider
4
  * Plugin URI: http://wordpress.org/plugins/carousel-slider
5
  * Description: <strong>Carousel Slider</strong> allows you to create beautiful, touch enabled, responsive carousels and sliders. It let you create SEO friendly Image carousel from Media Library or from custom URL, Video carousel using Youtube and Vimeo video, Post carousel, Hero banner slider and various types of WooCommerce products carousels.
6
+ * Version: 1.10.2
7
  * Author: Sayful Islam
8
  * Author URI: https://sayfulislam.com
9
+ * Requires PHP: 7.0
10
+ * Requires at least: 5.2
11
+ * Tested up to: 5.8
12
  *
13
+ * WC requires at least: 4.0
14
+ * WC tested up to: 5.5
15
  *
16
  * Text Domain: carousel-slider
17
  *
49
  *
50
  * @var string
51
  */
52
+ private $version = '1.10.2';
53
 
54
  /**
55
  * Minimum PHP version required
56
  *
57
  * @var string
58
  */
59
+ private $min_php = '7.0';
60
 
61
  /**
62
  * The instance of the class
76
  if ( is_null( self::$instance ) ) {
77
  self::$instance = new self();
78
 
79
+ // define constants
80
  self::$instance->define_constants();
81
 
82
+ // Register autoloader
83
+ self::$instance->register_autoloader();
84
+
85
  // Check if PHP version is supported for our plugin
86
  if ( ! self::$instance->is_supported_php() ) {
87
  register_activation_hook( __FILE__, array( self::$instance, 'auto_deactivate' ) );
90
  return self::$instance;
91
  }
92
 
93
+ // bootstrap main class
94
+ self::$instance->bootstrap_plugin();
95
+
96
  self::$instance->includes();
97
 
98
  register_activation_hook( __FILE__, array( self::$instance, 'activation' ) );
108
  * Define plugin constants
109
  */
110
  public function define_constants() {
111
+ define( 'CAROUSEL_SLIDER', $this->plugin_name );
112
  define( 'CAROUSEL_SLIDER_VERSION', $this->version );
113
  define( 'CAROUSEL_SLIDER_POST_TYPE', $this->post_type );
114
  define( 'CAROUSEL_SLIDER_FILE', __FILE__ );
121
  }
122
 
123
  /**
124
+ * Load plugin classes
 
 
 
125
  */
126
+ private function register_autoloader() {
127
+ if ( file_exists( CAROUSEL_SLIDER_PATH . '/vendor/autoload.php' ) ) {
128
+ include CAROUSEL_SLIDER_PATH . '/vendor/autoload.php';
129
+ } else {
130
+ include_once CAROUSEL_SLIDER_PATH . '/classes/Autoloader.php';
131
+
132
+ // instantiate the loader
133
+ $loader = new CarouselSlider\Autoloader;
134
+
135
+ // register the base directories for the namespace prefix
136
+ $loader->add_namespace( 'CarouselSlider', CAROUSEL_SLIDER_PATH . '/classes' );
137
+ $loader->add_namespace( 'CarouselSlider\Modules', CAROUSEL_SLIDER_PATH . '/modules' );
138
+
139
+ // register the autoloader
140
+ $loader->register();
141
  }
142
  }
143
 
144
+ /**
145
+ * Instantiate the required classes
146
+ *
147
+ * @return void
148
+ */
149
+ public function bootstrap_plugin() {
150
+ CarouselSlider\Plugin::init();
151
+ }
152
+
153
  /**
154
  * Include admin and front facing files
155
  */
156
  private function includes() {
 
157
  require_once CAROUSEL_SLIDER_INCLUDES . '/functions-carousel-slider.php';
158
  require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-activator.php';
159
  require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-product.php';
 
 
 
160
 
161
  if ( $this->is_request( 'admin' ) ) {
 
 
 
 
 
162
  require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-form.php';
163
  require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-admin.php';
164
  require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-meta-box.php';
165
  require_once CAROUSEL_SLIDER_INCLUDES . '/class-carousel-slider-hero-carousel.php';
 
166
  }
 
 
 
 
167
  }
168
 
169
  /**
171
  * @return void
172
  */
173
  public function activation() {
174
+ do_action( 'carousel_slider/activation' );
 
175
  }
176
 
177
  /**
179
  * @return void
180
  */
181
  public function deactivation() {
182
+ do_action( 'carousel_slider/deactivation' );
 
183
  }
184
 
185
  /**
197
  $error .= sprintf( __( 'The Carousel Slider plugin requires PHP version %s or greater.',
198
  'carousel-slider' ), $this->min_php );
199
  ?>
200
+ <div class="error">
201
+ <p><?php printf( $error ); ?></p>
202
+ </div>
203
  <?php
204
  }
205
 
classes/Admin/Admin.php ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider\Admin;
4
+
5
+ defined( 'ABSPATH' ) || exit;
6
+
7
+ class Admin {
8
+
9
+ /**
10
+ * The instance of the class
11
+ *
12
+ * @var self
13
+ */
14
+ protected static $instance;
15
+
16
+ /**
17
+ * Ensures only one instance of the class is loaded or can be loaded.
18
+ *
19
+ * @return self
20
+ */
21
+ public static function init() {
22
+ if ( is_null( self::$instance ) ) {
23
+ self::$instance = new self();
24
+
25
+ add_action( 'admin_enqueue_scripts', [ self::$instance, 'admin_scripts' ], 10 );
26
+ add_action( 'admin_menu', [ self::$instance, 'documentation_menu' ] );
27
+ add_filter( 'admin_footer_text', [ self::$instance, 'admin_footer_text' ] );
28
+ }
29
+
30
+ return self::$instance;
31
+ }
32
+
33
+ /**
34
+ * Load admin scripts
35
+ *
36
+ * @param $hook
37
+ */
38
+ public function admin_scripts( $hook ) {
39
+ global $post;
40
+
41
+ $_is_carousel = is_a( $post, 'WP_Post' ) && ( 'carousels' == $post->post_type );
42
+ $_is_doc = ( 'carousels_page_carousel-slider-documentation' == $hook );
43
+ $_is_plugin_page = 'plugins.php' == $hook;
44
+
45
+ if ( ! ( $_is_carousel || $_is_doc || $_is_plugin_page ) ) {
46
+ return;
47
+ }
48
+
49
+ wp_enqueue_media();
50
+ wp_enqueue_style( 'carousel-slider-admin' );
51
+ wp_enqueue_script( 'carousel-slider-admin' );
52
+ }
53
+
54
+ /**
55
+ * Add documentation menu
56
+ */
57
+ public function documentation_menu() {
58
+ add_submenu_page(
59
+ 'edit.php?post_type=carousels',
60
+ __( 'Documentation', 'carousel-slider' ),
61
+ __( 'Documentation', 'carousel-slider' ),
62
+ 'manage_options',
63
+ 'carousel-slider-documentation',
64
+ [ $this, 'documentation_page_callback' ]
65
+ );
66
+ }
67
+
68
+ /**
69
+ * Documentation page callback
70
+ */
71
+ public function documentation_page_callback() {
72
+ include_once CAROUSEL_SLIDER_TEMPLATES . '/admin/documentation.php';
73
+ }
74
+
75
+ /**
76
+ * Add custom footer text on plugins page.
77
+ *
78
+ * @param string $text
79
+ *
80
+ * @return string
81
+ */
82
+ public function admin_footer_text( $text ) {
83
+ global $post_type, $hook_suffix;
84
+
85
+ $footer_text = sprintf(
86
+ __( 'If you like %1$s Carousel Slider %2$s please leave us a %3$s rating. A huge thanks in advance!', 'carousel-slider' ),
87
+ '<strong>',
88
+ '</strong>',
89
+ '<a href="https://wordpress.org/support/view/plugin-reviews/carousel-slider?filter=5#postform" target="_blank" data-rated="Thanks :)">&starf;&starf;&starf;&starf;&starf;</a>'
90
+ );
91
+
92
+ if ( $post_type == 'carousels' || $hook_suffix == 'carousels_page_carousel-slider-documentation' ) {
93
+ return $footer_text;
94
+ }
95
+
96
+ return $text;
97
+ }
98
+ }
classes/Admin/GutenbergBlock.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider\Admin;
4
+
5
+ use WP_Post;
6
+
7
+ defined( 'ABSPATH' ) || exit;
8
+
9
+ class GutenbergBlock {
10
+ /**
11
+ * The instance of the class
12
+ *
13
+ * @var self
14
+ */
15
+ protected static $instance;
16
+
17
+ /**
18
+ * Ensures only one instance of this class is loaded or can be loaded.
19
+ *
20
+ * @return self
21
+ */
22
+ public static function init() {
23
+ if ( is_null( self::$instance ) ) {
24
+ self::$instance = new self();
25
+
26
+ add_action( 'init', array( self::$instance, 'gutenberg_block' ) );
27
+ }
28
+
29
+ return self::$instance;
30
+ }
31
+
32
+ /**
33
+ * Register gutenberg block
34
+ */
35
+ public function gutenberg_block() {
36
+ if ( ! function_exists( 'register_block_type' ) ) {
37
+ return;
38
+ }
39
+ wp_register_script( 'carousel-slider-gutenberg-block',
40
+ CAROUSEL_SLIDER_ASSETS . '/js/gutenberg-block.js',
41
+ [ 'underscore', 'wp-blocks', 'wp-element', 'wp-components', 'wp-editor', 'wp-i18n' ]
42
+ );
43
+ wp_register_style( 'carousel-slider-gutenberg-style',
44
+ CAROUSEL_SLIDER_ASSETS . '/css/gutenberg-block.css',
45
+ [ 'wp-edit-blocks' ]
46
+ );
47
+ wp_localize_script( 'carousel-slider-gutenberg-block',
48
+ 'carousel_slider_gutenberg_block', $this->block_localize_data()
49
+ );
50
+
51
+ register_block_type( 'carousel-slider/slider', [
52
+ 'editor_script' => 'carousel-slider-gutenberg-block',
53
+ 'editor_style' => 'carousel-slider-gutenberg-style',
54
+ ] );
55
+ }
56
+
57
+ /**
58
+ * Get localize data
59
+ *
60
+ * @return array
61
+ */
62
+ private function block_localize_data(): array {
63
+ $_sliders = get_posts( [
64
+ 'posts_per_page' => - 1,
65
+ 'orderby' => 'date',
66
+ 'order' => 'DESC',
67
+ 'post_type' => 'carousels',
68
+ 'post_status' => 'publish',
69
+ ] );
70
+ $sliders = [];
71
+ foreach ( $_sliders as $form ) {
72
+ if ( ! $form instanceof WP_Post ) {
73
+ continue;
74
+ }
75
+ $sliders[] = array(
76
+ 'value' => absint( $form->ID ),
77
+ 'label' => esc_attr( $form->post_title ),
78
+ );
79
+ }
80
+
81
+ return array(
82
+ 'sliders' => $sliders,
83
+ 'site_url' => site_url(),
84
+ 'block_logo' => CAROUSEL_SLIDER_ASSETS . '/static-images/logo.svg',
85
+ 'block_title' => __( 'Carousel Slider', 'carousel-slider' ),
86
+ 'select_slider' => __( 'Select a Slider', 'carousel-slider' ),
87
+ 'selected_slider' => __( 'Current Selected Slider', 'carousel-slider' ),
88
+ 'filter_slider' => __( 'Type to filter sliders', 'carousel-slider' ),
89
+ );
90
+ }
91
+ }
classes/Admin/Setting.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider\Admin;
4
+
5
+ use CarouselSlider\Supports\SettingAPI;
6
+ use Exception;
7
+
8
+ defined( 'ABSPATH' ) || exit;
9
+
10
+ class Setting {
11
+ /**
12
+ * Instance of current class
13
+ *
14
+ * @var self
15
+ */
16
+ private static $instance;
17
+
18
+ /**
19
+ * @return self
20
+ */
21
+ public static function init() {
22
+ if ( is_null( self::$instance ) ) {
23
+ self::$instance = new self();
24
+
25
+ add_action( 'init', array( self::$instance, 'settings' ) );
26
+ }
27
+
28
+ return self::$instance;
29
+ }
30
+
31
+ /**
32
+ * Plugin setting fields
33
+ *
34
+ * @throws Exception
35
+ */
36
+ public function settings() {
37
+ $settings = new SettingAPI;
38
+ $settings->add_menu( array(
39
+ 'page_title' => __( 'Carousel Slider Settings', 'carousel-slider' ),
40
+ 'menu_title' => __( 'Settings', 'carousel-slider' ),
41
+ 'about_text' => __( 'Thank you for choosing Carousel Slider. We hope you enjoy it!', 'carousel-slider' ),
42
+ 'menu_slug' => 'settings',
43
+ 'parent_slug' => 'edit.php?post_type=carousels',
44
+ 'option_name' => 'carousel_slider_settings',
45
+ ) );
46
+
47
+ // Add settings page tab
48
+ $settings->add_tab( array(
49
+ 'id' => 'general',
50
+ 'title' => __( 'General', 'carousel-slider' ),
51
+ ) );
52
+
53
+ $settings->add_field( array(
54
+ 'id' => 'load_scripts',
55
+ 'type' => 'radio',
56
+ 'std' => 'optimized',
57
+ 'name' => __( 'Style & Scrips', 'carousel-slider' ),
58
+ 'desc' => __( 'If you choose Optimized, then scrips and styles will be loaded only on page where you are using shortcode. If Optimized is not working for you then choose Always.', 'carousel-slider' ),
59
+ 'options' => array(
60
+ 'always' => __( 'Always', 'carousel-slider' ),
61
+ 'optimized' => __( 'Optimized (recommended)', 'carousel-slider' ),
62
+ ),
63
+ 'tab' => 'general',
64
+ ) );
65
+ }
66
+ }
classes/Ajax.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider;
4
+
5
+ defined( 'ABSPATH' ) || exit;
6
+
7
+ class Ajax {
8
+
9
+ /**
10
+ * The instance of the class
11
+ *
12
+ * @var self
13
+ */
14
+ protected static $instance;
15
+
16
+ /**
17
+ * Ensures only one instance of the class is loaded or can be loaded.
18
+ *
19
+ * @return self
20
+ */
21
+ public static function init() {
22
+ if ( is_null( self::$instance ) ) {
23
+ self::$instance = new self();
24
+
25
+ add_action( 'wp_ajax_carousel_slider_test', [ self::$instance, 'test' ] );
26
+ }
27
+
28
+ return self::$instance;
29
+ }
30
+
31
+ /**
32
+ * A AJAX method just to test some data
33
+ */
34
+ public function test() {
35
+ if ( ! current_user_can( 'manage_options' ) ) {
36
+ wp_die( 'Sorry. This link only for developer to do some testing.' );
37
+ }
38
+
39
+ var_dump( 'Testing some data on AJAX' );
40
+ die();
41
+ }
42
+ }
classes/Assets.php ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider;
4
+
5
+ defined( 'ABSPATH' ) || exit;
6
+
7
+ class Assets {
8
+
9
+ /**
10
+ * The instance of the class
11
+ *
12
+ * @var self
13
+ */
14
+ private static $instance;
15
+
16
+ /**
17
+ * Plugin name slug
18
+ *
19
+ * @var string
20
+ */
21
+ private $plugin_name;
22
+
23
+ /**
24
+ * plugin version
25
+ *
26
+ * @var string
27
+ */
28
+ private $version;
29
+
30
+ /**
31
+ * Ensures only one instance of the class is loaded or can be loaded.
32
+ *
33
+ * @return self
34
+ */
35
+ public static function init() {
36
+ if ( is_null( self::$instance ) ) {
37
+ self::$instance = new self();
38
+
39
+ add_action( 'wp_loaded', [ self::$instance, 'register' ] );
40
+ }
41
+
42
+ return self::$instance;
43
+ }
44
+
45
+ /**
46
+ * Check if script debugging is enabled
47
+ *
48
+ * @return bool
49
+ */
50
+ private function is_script_debug_enabled(): bool {
51
+ return defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG;
52
+ }
53
+
54
+ /**
55
+ * Checks to see if the site has SSL enabled or not.
56
+ *
57
+ * @return bool
58
+ */
59
+ public static function is_ssl(): bool {
60
+ if ( is_ssl() ) {
61
+ return true;
62
+ } elseif ( 0 === stripos( get_option( 'siteurl' ), 'https://' ) ) {
63
+ return true;
64
+ } elseif ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && 'https' == $_SERVER['HTTP_X_FORWARDED_PROTO'] ) {
65
+ return true;
66
+ }
67
+
68
+ return false;
69
+ }
70
+
71
+ /**
72
+ * Get assets URL
73
+ *
74
+ * @param string $path
75
+ *
76
+ * @return string
77
+ */
78
+ public static function get_assets_url( $path = '' ): string {
79
+ $url = CAROUSEL_SLIDER_ASSETS;
80
+
81
+ if ( static::is_ssl() && 0 === stripos( $url, 'http://' ) ) {
82
+ $url = str_replace( 'http://', 'https://', $url );
83
+ }
84
+
85
+ if ( ! empty( $path ) ) {
86
+ return rtrim( $url, '/' ) . '/' . ltrim( $path, '/' );
87
+ }
88
+
89
+ return $url;
90
+ }
91
+
92
+ /**
93
+ * Register our app scripts and styles
94
+ *
95
+ * @return void
96
+ */
97
+ public function register() {
98
+ $this->plugin_name = CAROUSEL_SLIDER;
99
+ $this->version = CAROUSEL_SLIDER_VERSION;
100
+
101
+ if ( $this->is_script_debug_enabled() ) {
102
+ $this->version = $this->version . '-' . time();
103
+ }
104
+
105
+ $this->register_scripts( $this->get_scripts() );
106
+ $this->register_styles( $this->get_styles() );
107
+ }
108
+
109
+ /**
110
+ * Register scripts
111
+ *
112
+ * @param array $scripts
113
+ *
114
+ * @return void
115
+ */
116
+ private function register_scripts( array $scripts ) {
117
+ foreach ( $scripts as $handle => $script ) {
118
+ $deps = isset( $script['deps'] ) ? $script['deps'] : false;
119
+ $in_footer = isset( $script['in_footer'] ) ? $script['in_footer'] : true;
120
+ $version = isset( $script['version'] ) ? $script['version'] : $this->version;
121
+ wp_register_script( $handle, $script['src'], $deps, $version, $in_footer );
122
+ }
123
+ }
124
+
125
+ /**
126
+ * Register styles
127
+ *
128
+ * @param array $styles
129
+ *
130
+ * @return void
131
+ */
132
+ public function register_styles( array $styles ) {
133
+ foreach ( $styles as $handle => $style ) {
134
+ $deps = isset( $style['deps'] ) ? $style['deps'] : false;
135
+ wp_register_style( $handle, $style['src'], $deps, $this->version );
136
+ }
137
+ }
138
+
139
+ /**
140
+ * Get all registered scripts
141
+ *
142
+ * @return array
143
+ */
144
+ public function get_scripts(): array {
145
+ return [
146
+ 'select2' => [
147
+ 'src' => static::get_assets_url( 'lib/select2/select2.min.js' ),
148
+ 'deps' => [ 'jquery' ],
149
+ 'version' => '4.0.5',
150
+ ],
151
+ 'wp-color-picker-alpha' => [
152
+ 'src' => static::get_assets_url( 'lib/wp-color-picker-alpha/wp-color-picker-alpha.min.js' ),
153
+ 'deps' => [ 'jquery', 'wp-color-picker' ],
154
+ 'version' => '2.1.3',
155
+ ],
156
+ "carousel-slider-admin" => [
157
+ 'src' => static::get_assets_url( 'js/admin.js' ),
158
+ 'deps' => [
159
+ 'jquery',
160
+ 'select2',
161
+ 'wp-color-picker-alpha',
162
+ 'jquery-ui-accordion',
163
+ 'jquery-ui-datepicker',
164
+ 'jquery-ui-sortable',
165
+ 'jquery-ui-tabs',
166
+ ],
167
+ ],
168
+ 'owl-carousel' => [
169
+ 'src' => static::get_assets_url( 'lib/owl-carousel/owl.carousel.min.js' ),
170
+ 'deps' => [ 'jquery' ],
171
+ 'version' => '2.3.4',
172
+ ],
173
+ 'magnific-popup' => [
174
+ 'src' => static::get_assets_url( 'lib/magnific-popup/jquery.magnific-popup.min.js' ),
175
+ 'deps' => [ 'jquery' ],
176
+ 'version' => '1.1.0',
177
+ ],
178
+ "carousel-slider-frontend" => [
179
+ 'src' => static::get_assets_url( 'js/frontend.js' ),
180
+ 'deps' => [ 'jquery', 'owl-carousel', 'magnific-popup' ],
181
+ ],
182
+ ];
183
+ }
184
+
185
+ /**
186
+ * Get registered styles
187
+ *
188
+ * @return array
189
+ */
190
+ public function get_styles(): array {
191
+ return [
192
+ "carousel-slider-frontend" => [
193
+ 'src' => static::get_assets_url( 'css/frontend.css' )
194
+ ],
195
+ "carousel-slider-admin" => [
196
+ 'src' => static::get_assets_url( 'css/admin.css' ),
197
+ 'deps' => [ 'wp-color-picker' ],
198
+ ],
199
+ ];
200
+ }
201
+ }
classes/Autoloader.php ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider;
4
+
5
+ defined( 'ABSPATH' ) || exit;
6
+
7
+ class Autoloader {
8
+ /**
9
+ * An associative array where the key is a namespace prefix and the value
10
+ * is an array of base directories for classes in that namespace.
11
+ *
12
+ * @var array
13
+ */
14
+ protected $prefixes = [];
15
+
16
+ /**
17
+ * Register loader with SPL autoloader stack.
18
+ *
19
+ * @return void
20
+ */
21
+ public function register() {
22
+ spl_autoload_register( [ $this, 'load_class' ] );
23
+ }
24
+
25
+ /**
26
+ * Adds a base directory for a namespace prefix.
27
+ *
28
+ * @param string $prefix The namespace prefix.
29
+ * @param string $base_dir A base directory for class files in the
30
+ * namespace.
31
+ * @param bool $prepend If true, prepend the base directory to the stack
32
+ * instead of appending it; this causes it to be searched first rather
33
+ * than last.
34
+ *
35
+ * @return void
36
+ */
37
+ public function add_namespace( $prefix, $base_dir, $prepend = false ) {
38
+ // normalize namespace prefix
39
+ $prefix = trim( $prefix, '\\' ) . '\\';
40
+
41
+ // normalize the base directory with a trailing separator
42
+ $base_dir = rtrim( $base_dir, DIRECTORY_SEPARATOR ) . '/';
43
+
44
+ // initialize the namespace prefix array
45
+ if ( isset( $this->prefixes[ $prefix ] ) === false ) {
46
+ $this->prefixes[ $prefix ] = array();
47
+ }
48
+
49
+ // retain the base directory for the namespace prefix
50
+ if ( $prepend ) {
51
+ array_unshift( $this->prefixes[ $prefix ], $base_dir );
52
+ } else {
53
+ array_push( $this->prefixes[ $prefix ], $base_dir );
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Loads the class file for a given class name.
59
+ *
60
+ * @param string $class The fully-qualified class name.
61
+ *
62
+ * @return mixed The mapped file name on success, or boolean false on
63
+ * failure.
64
+ */
65
+ public function load_class( $class ) {
66
+ // the current namespace prefix
67
+ $prefix = $class;
68
+
69
+ // work backwards through the namespace names of the fully-qualified
70
+ // class name to find a mapped file name
71
+ while ( false !== $pos = strrpos( $prefix, '\\' ) ) {
72
+
73
+ // retain the trailing namespace separator in the prefix
74
+ $prefix = substr( $class, 0, $pos + 1 );
75
+
76
+ // the rest is the relative class name
77
+ $relative_class = substr( $class, $pos + 1 );
78
+
79
+ // try to load a mapped file for the prefix and relative class
80
+ $mapped_file = $this->load_mapped_file( $prefix, $relative_class );
81
+ if ( $mapped_file ) {
82
+ return $mapped_file;
83
+ }
84
+
85
+ // remove the trailing namespace separator for the next iteration
86
+ // of strrpos()
87
+ $prefix = rtrim( $prefix, '\\' );
88
+ }
89
+
90
+ // never found a mapped file
91
+ return false;
92
+ }
93
+
94
+ /**
95
+ * Load the mapped file for a namespace prefix and relative class.
96
+ *
97
+ * @param string $prefix The namespace prefix.
98
+ * @param string $relative_class The relative class name.
99
+ *
100
+ * @return mixed Boolean false if no mapped file can be loaded, or the
101
+ * name of the mapped file that was loaded.
102
+ */
103
+ protected function load_mapped_file( $prefix, $relative_class ) {
104
+ // are there any base directories for this namespace prefix?
105
+ if ( isset( $this->prefixes[ $prefix ] ) === false ) {
106
+ return false;
107
+ }
108
+
109
+ // look through base directories for this namespace prefix
110
+ foreach ( $this->prefixes[ $prefix ] as $base_dir ) {
111
+
112
+ // replace the namespace prefix with the base directory,
113
+ // replace namespace separators with directory separators
114
+ // in the relative class name, append with .php
115
+ $file = $base_dir
116
+ . str_replace( '\\', '/', $relative_class )
117
+ . '.php';
118
+
119
+ // if the mapped file exists, require it
120
+ if ( $this->require_file( $file ) ) {
121
+ // yes, we're done
122
+ return $file;
123
+ }
124
+ }
125
+
126
+ // never found it
127
+ return false;
128
+ }
129
+
130
+ /**
131
+ * If a file exists, require it from the file system.
132
+ *
133
+ * @param string $file The file to require.
134
+ *
135
+ * @return bool True if the file exists, false if not.
136
+ */
137
+ protected function require_file( $file ) {
138
+ if ( file_exists( $file ) ) {
139
+ require $file;
140
+
141
+ return true;
142
+ }
143
+
144
+ return false;
145
+ }
146
+ }
classes/Frontend/Frontend.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider\Frontend;
4
+
5
+ defined( 'ABSPATH' ) || exit;
6
+
7
+ class Frontend {
8
+
9
+ /**
10
+ * The instance of the class
11
+ *
12
+ * @var self
13
+ */
14
+ protected static $instance;
15
+
16
+ /**
17
+ * Ensures only one instance of the class is loaded or can be loaded.
18
+ *
19
+ * @return self
20
+ */
21
+ public static function init() {
22
+ if ( is_null( self::$instance ) ) {
23
+ self::$instance = new self();
24
+
25
+ add_action( 'wp_enqueue_scripts', [ self::$instance, 'frontend_scripts' ], 15 );
26
+ }
27
+
28
+ return self::$instance;
29
+ }
30
+
31
+ /**
32
+ * Load frontend scripts
33
+ */
34
+ public function frontend_scripts() {
35
+ if ( ! $this->should_load_scripts() ) {
36
+ return;
37
+ }
38
+
39
+ wp_enqueue_style( 'carousel-slider-frontend' );
40
+ wp_enqueue_script( 'carousel-slider-frontend' );
41
+ }
42
+
43
+ /**
44
+ * Check if it should load frontend scripts
45
+ *
46
+ * @return bool
47
+ */
48
+ private function should_load_scripts(): bool {
49
+ $settings = get_option( 'carousel_slider_settings' );
50
+ $settings = is_array( $settings ) ? $settings : [];
51
+ if ( isset( $settings['load_scripts'] ) && 'always' == $settings['load_scripts'] ) {
52
+ return true;
53
+ }
54
+
55
+ global $post;
56
+ $load_scripts = is_active_widget( false, false, 'widget_carousel_slider', true ) ||
57
+ ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'carousel_slide' ) ) ||
58
+ ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'carousel' ) );
59
+
60
+ return apply_filters( 'carousel_slider_load_scripts', $load_scripts );
61
+ }
62
+ }
classes/Frontend/Preview.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider\Frontend;
4
+
5
+ class Preview {
6
+ /**
7
+ * The instance of the class
8
+ *
9
+ * @var self
10
+ */
11
+ protected static $instance;
12
+
13
+ /**
14
+ * Ensures only one instance of this class is loaded or can be loaded.
15
+ *
16
+ * @return self
17
+ */
18
+ public static function init() {
19
+ if ( is_null( self::$instance ) ) {
20
+ self::$instance = new self();
21
+
22
+ add_filter( 'template_include', array( self::$instance, 'template_include' ) );
23
+ }
24
+
25
+ return self::$instance;
26
+ }
27
+
28
+ /**
29
+ * Include custom template
30
+ *
31
+ * @param $template
32
+ *
33
+ * @return mixed|string
34
+ */
35
+ public function template_include( $template ) {
36
+ if ( isset( $_GET['carousel_slider_preview'], $_GET['carousel_slider_iframe'], $_GET['slider_id'] ) ) {
37
+ if ( current_user_can( 'edit_pages' ) ) {
38
+ $template = CAROUSEL_SLIDER_TEMPLATES . '/public/preview-slider.php';
39
+ }
40
+ }
41
+
42
+ return $template;
43
+ }
44
+ }
classes/Frontend/Shortcode.php ADDED
@@ -0,0 +1,376 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider\Frontend;
4
+
5
+ defined( 'ABSPATH' ) || exit;
6
+
7
+ class Shortcode {
8
+
9
+ /**
10
+ * The instance of the class
11
+ *
12
+ * @var self
13
+ */
14
+ protected static $instance = null;
15
+
16
+ /**
17
+ * Ensures only one instance of this class is loaded or can be loaded.
18
+ *
19
+ * @return self
20
+ */
21
+ public static function init() {
22
+ if ( is_null( self::$instance ) ) {
23
+ self::$instance = new self();
24
+
25
+ add_shortcode( 'carousel_slide', [ self::$instance, 'carousel_slide' ] );
26
+ }
27
+
28
+ return self::$instance;
29
+ }
30
+
31
+ /**
32
+ * A shortcode for rendering the carousel slide.
33
+ *
34
+ * @param array $attributes Shortcode attributes.
35
+ *
36
+ * @return string The shortcode output
37
+ */
38
+ public function carousel_slide( $attributes ) {
39
+ if ( empty( $attributes['id'] ) ) {
40
+ return '';
41
+ }
42
+
43
+ $id = intval( $attributes['id'] );
44
+
45
+ $slide_type = get_post_meta( $id, '_slide_type', true );
46
+ $slide_type = in_array( $slide_type, carousel_slider_slide_type() ) ? $slide_type : 'image-carousel';
47
+
48
+ if ( $slide_type == 'post-carousel' ) {
49
+ ob_start();
50
+ require CAROUSEL_SLIDER_TEMPLATES . '/public/post-carousel.php';
51
+ $html = ob_get_contents();
52
+ ob_end_clean();
53
+
54
+ return apply_filters( 'carousel_slider_posts_carousel', $html, $id );
55
+ }
56
+
57
+ if ( $slide_type == 'video-carousel' ) {
58
+ wp_enqueue_script( 'magnific-popup' );
59
+ $_video_urls = array_filter( explode( ',', $this->get_meta( $id, '_video_url' ) ) );
60
+ $urls = $this->get_video_url( $_video_urls );
61
+
62
+ ob_start();
63
+ require CAROUSEL_SLIDER_TEMPLATES . '/public/video-carousel.php';
64
+ $html = ob_get_contents();
65
+ ob_end_clean();
66
+
67
+ return apply_filters( 'carousel_slider_videos_carousel', $html, $id );
68
+ }
69
+
70
+ if ( $slide_type == 'image-carousel-url' ) {
71
+ ob_start();
72
+ require CAROUSEL_SLIDER_TEMPLATES . '/public/images-carousel-url.php';
73
+ $html = ob_get_contents();
74
+ ob_end_clean();
75
+
76
+ return apply_filters( 'carousel_slider_link_images_carousel', $html, $id );
77
+ }
78
+
79
+ if ( $slide_type == 'image-carousel' ) {
80
+ ob_start();
81
+ require CAROUSEL_SLIDER_TEMPLATES . '/public/images-carousel.php';
82
+ $html = ob_get_contents();
83
+ ob_end_clean();
84
+
85
+ return apply_filters( 'carousel_slider_gallery_images_carousel', $html, $id );
86
+ }
87
+
88
+ if ( $slide_type == 'product-carousel' ) {
89
+
90
+ $query_type = get_post_meta( $id, '_product_query_type', true );
91
+ $query_type = empty( $query_type ) ? 'query_product' : $query_type;
92
+ // Type mistake
93
+ $query_type = ( 'query_porduct' == $query_type ) ? 'query_product' : $query_type;
94
+ $product_query = get_post_meta( $id, '_product_query', true );
95
+
96
+ if ( $query_type == 'query_product' && $product_query == 'product_categories_list' ) {
97
+ ob_start();
98
+
99
+ echo $this->product_categories( $id );
100
+ $html = ob_get_contents();
101
+ ob_end_clean();
102
+
103
+ return apply_filters( 'carousel_slider_product_carousel', $html, $id );
104
+ }
105
+
106
+ ob_start();
107
+ require CAROUSEL_SLIDER_TEMPLATES . '/public/product-carousel.php';
108
+ $html = ob_get_contents();
109
+ ob_end_clean();
110
+
111
+ return apply_filters( 'carousel_slider_product_carousel', $html, $id );
112
+ }
113
+
114
+ if ( $slide_type == 'hero-banner-slider' ) {
115
+
116
+ ob_start();
117
+ require CAROUSEL_SLIDER_TEMPLATES . '/public/hero-banner-slider.php';
118
+ $html = ob_get_contents();
119
+ ob_end_clean();
120
+
121
+ return apply_filters( 'Carousel_Slider_Hero_Carousel', $html, $id );
122
+ }
123
+
124
+ return '';
125
+ }
126
+
127
+ /**
128
+ * Generate carousel options for slider
129
+ *
130
+ * @param $id
131
+ *
132
+ * @return array
133
+ */
134
+ private function carousel_options( $id ) {
135
+ $_nav_button = get_post_meta( $id, '_nav_button', true );
136
+ $_arrow_position = get_post_meta( $id, '_arrow_position', true );
137
+ $_dot_nav = get_post_meta( $id, '_dot_nav', true );
138
+ $_bullet_position = get_post_meta( $id, '_bullet_position', true );
139
+ $_bullet_shape = get_post_meta( $id, '_bullet_shape', true );
140
+
141
+ $class = 'owl-carousel carousel-slider';
142
+
143
+ // Arrows position
144
+ if ( $_arrow_position == 'inside' ) {
145
+ $class .= ' arrows-inside';
146
+ } else {
147
+ $class .= ' arrows-outside';
148
+ }
149
+
150
+ // Arrows visibility
151
+ if ( $_nav_button == 'always' ) {
152
+ $class .= ' arrows-visible-always';
153
+ } elseif ( $_nav_button == 'off' ) {
154
+ $class .= ' arrows-hidden';
155
+ } else {
156
+ $class .= ' arrows-visible-hover';
157
+ }
158
+
159
+ // Dots visibility
160
+ if ( $_dot_nav == 'on' ) {
161
+ $class .= ' dots-visible-always';
162
+ } elseif ( $_dot_nav == 'off' ) {
163
+ $class .= ' dots-hidden';
164
+ } else {
165
+ $class .= ' dots-visible-hover';
166
+ }
167
+
168
+ // Dots position
169
+ if ( $_bullet_position == 'left' ) {
170
+ $class .= ' dots-left';
171
+ } elseif ( $_bullet_position == 'right' ) {
172
+ $class .= ' dots-right';
173
+ } else {
174
+ $class .= ' dots-center';
175
+ }
176
+
177
+ // Dots shape
178
+ if ( $_bullet_shape == 'circle' ) {
179
+ $class .= ' dots-circle';
180
+ } else {
181
+ $class .= ' dots-square';
182
+ }
183
+
184
+ $_dot_nav = ( get_post_meta( $id, '_dot_nav', true ) != 'off' );
185
+ $_nav_button = ( get_post_meta( $id, '_nav_button', true ) != 'off' );
186
+
187
+ $options_array = array(
188
+ 'id' => 'id-' . $id,
189
+ 'class' => $class,
190
+ // General
191
+ 'data-slide-type' => $this->get_meta( $id, '_slide_type', 'image-carousel' ),
192
+ 'data-margin' => $this->get_meta( $id, '_margin_right', '10' ),
193
+ 'data-slide-by' => $this->get_meta( $id, '_slide_by', '1' ),
194
+ 'data-loop' => $this->get_meta( $id, '_inifnity_loop', 'true' ),
195
+ 'data-lazy-load' => $this->get_meta( $id, '_lazy_load_image', 'false' ),
196
+ 'data-stage-padding' => $this->get_meta( $id, '_stage_padding', '0' ),
197
+ 'data-auto-width' => $this->get_meta( $id, '_auto_width', 'false' ),
198
+ // Navigation
199
+ 'data-dots' => $_dot_nav,
200
+ 'data-nav' => $_nav_button,
201
+ // Autoplay
202
+ 'data-autoplay' => $this->get_meta( $id, '_autoplay', 'true' ),
203
+ 'data-autoplay-timeout' => $this->get_meta( $id, '_autoplay_timeout', '5000' ),
204
+ 'data-autoplay-speed' => $this->get_meta( $id, '_autoplay_speed', '500' ),
205
+ 'data-autoplay-hover-pause' => $this->get_meta( $id, '_autoplay_pause', 'false' ),
206
+ // Responsive
207
+ 'data-colums' => $this->get_meta( $id, '_items', '4' ),
208
+ 'data-colums-desktop' => $this->get_meta( $id, '_items_desktop', '4' ),
209
+ 'data-colums-small-desktop' => $this->get_meta( $id, '_items_small_desktop', '4' ),
210
+ 'data-colums-tablet' => $this->get_meta( $id, '_items_portrait_tablet', '3' ),
211
+ 'data-colums-small-tablet' => $this->get_meta( $id, '_items_small_portrait_tablet', '2' ),
212
+ 'data-colums-mobile' => $this->get_meta( $id, '_items_portrait_mobile', '1' ),
213
+ );
214
+
215
+ return $this->array_to_data( $options_array );
216
+ }
217
+
218
+ /**
219
+ * Get post meta by id and key
220
+ *
221
+ * @param $id
222
+ * @param $key
223
+ * @param null $default
224
+ *
225
+ * @return string
226
+ */
227
+ public function get_meta( $id, $key, $default = null ) {
228
+ return carousel_slider_get_meta( $id, $key, $default );
229
+ }
230
+
231
+ /**
232
+ * Convert array to html data attribute
233
+ *
234
+ * @param $array
235
+ *
236
+ * @return array
237
+ */
238
+ public function array_to_data( $array ) {
239
+ return carousel_slider_array_to_attribute( $array );
240
+ }
241
+
242
+ /**
243
+ * Get product categories list carousel
244
+ *
245
+ * @param int $id
246
+ *
247
+ * @return string
248
+ */
249
+ private function product_categories( $id = 0 ) {
250
+ $product_categories = get_terms( array(
251
+ 'taxonomy' => 'product_cat',
252
+ 'hide_empty' => 1,
253
+ 'orderby' => 'name',
254
+ 'order' => 'ASC',
255
+ ) );
256
+
257
+ $options = $this->carousel_options( $id );
258
+ $options = join( " ", $options );
259
+
260
+ ob_start();
261
+ if ( $product_categories ) {
262
+ echo '<div class="carousel-slider-outer carousel-slider-outer-products carousel-slider-outer-' . $id . '">';
263
+ carousel_slider_inline_style( $id );
264
+ echo '<div ' . $options . '>';
265
+
266
+
267
+ foreach ( $product_categories as $category ) {
268
+ echo '<div class="product carousel-slider__product">';
269
+ do_action( 'woocommerce_before_subcategory', $category );
270
+ do_action( 'woocommerce_before_subcategory_title', $category );
271
+ do_action( 'woocommerce_shop_loop_subcategory_title', $category );
272
+ do_action( 'woocommerce_after_subcategory_title', $category );
273
+ do_action( 'woocommerce_after_subcategory', $category );
274
+ echo '</div>';
275
+ }
276
+
277
+ echo '</div>';
278
+ echo '</div>';
279
+ }
280
+
281
+ $html = ob_get_contents();
282
+ ob_end_clean();
283
+
284
+ return $html;
285
+ }
286
+
287
+ /**
288
+ * Get Youtube video ID from URL
289
+ *
290
+ * @param string $url
291
+ *
292
+ * @return mixed Youtube video ID or FALSE if not found
293
+ */
294
+ private function get_youtube_id_from_url( $url ) {
295
+ $parts = parse_url( $url );
296
+ if ( isset( $parts['query'] ) ) {
297
+ parse_str( $parts['query'], $qs );
298
+ if ( isset( $qs['v'] ) ) {
299
+ return $qs['v'];
300
+ } elseif ( isset( $qs['vi'] ) ) {
301
+ return $qs['vi'];
302
+ }
303
+ }
304
+ if ( isset( $parts['path'] ) ) {
305
+ $path = explode( '/', trim( $parts['path'], '/' ) );
306
+
307
+ return $path[ count( $path ) - 1 ];
308
+ }
309
+
310
+ return false;
311
+ }
312
+
313
+ /**
314
+ * Get Vimeo video ID from URL
315
+ *
316
+ * @param string $url
317
+ *
318
+ * @return mixed Vimeo video ID or FALSE if not found
319
+ */
320
+ private function get_vimeo_id_from_url( $url ) {
321
+ $parts = parse_url( $url );
322
+ if ( isset( $parts['path'] ) ) {
323
+ $path = explode( '/', trim( $parts['path'], '/' ) );
324
+
325
+ return $path[ count( $path ) - 1 ];
326
+ }
327
+
328
+ return false;
329
+ }
330
+
331
+ /**
332
+ * @param $video_urls
333
+ *
334
+ * @return array
335
+ */
336
+ public function get_video_url( array $video_urls ) {
337
+ $_url = array();
338
+ foreach ( $video_urls as $video_url ) {
339
+ if ( ! filter_var( $video_url, FILTER_VALIDATE_URL ) ) {
340
+ continue;
341
+ }
342
+ $provider = '';
343
+ $video_id = '';
344
+ $thumbnail = '';
345
+ if ( false !== strpos( $video_url, 'youtube.com' ) ) {
346
+ $provider = 'youtube';
347
+ $video_id = $this->get_youtube_id_from_url( $video_url );
348
+ $thumbnail = array(
349
+ 'large' => 'https://img.youtube.com/vi/' . $video_id . '/hqdefault.jpg',
350
+ 'medium' => 'https://img.youtube.com/vi/' . $video_id . '/mqdefault.jpg',
351
+ 'small' => 'https://img.youtube.com/vi/' . $video_id . '/sddefault.jpg',
352
+ );
353
+
354
+ } elseif ( false !== strpos( $video_url, 'vimeo.com' ) ) {
355
+ $provider = 'vimeo';
356
+ $video_id = $this->get_vimeo_id_from_url( $video_url );
357
+ $response = wp_remote_get( "https://vimeo.com/api/v2/video/$video_id.json" );
358
+ $thumbnail = json_decode( wp_remote_retrieve_body( $response ), true );
359
+ $thumbnail = array(
360
+ 'large' => isset( $thumbnail[0]['thumbnail_large'] ) ? $thumbnail[0]['thumbnail_large'] : null,
361
+ 'medium' => isset( $thumbnail[0]['thumbnail_medium'] ) ? $thumbnail[0]['thumbnail_medium'] : null,
362
+ 'small' => isset( $thumbnail[0]['thumbnail_small'] ) ? $thumbnail[0]['thumbnail_small'] : null,
363
+ );
364
+ }
365
+
366
+ $_url[] = array(
367
+ 'provider' => $provider,
368
+ 'url' => $video_url,
369
+ 'video_id' => $video_id,
370
+ 'thumbnail' => $thumbnail,
371
+ );
372
+ }
373
+
374
+ return $_url;
375
+ }
376
+ }
classes/Frontend/StructuredData.php ADDED
@@ -0,0 +1,298 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider\Frontend;
4
+
5
+ defined( 'ABSPATH' ) || exit;
6
+
7
+ class StructuredData {
8
+ protected static $instance = null;
9
+ private $_product_data = array();
10
+ private $_image_data = array();
11
+ private $_post_data = array();
12
+
13
+ /**
14
+ * Ensures only one instance of this class is loaded or can be loaded.
15
+ *
16
+ * @return self
17
+ */
18
+ public static function init() {
19
+ if ( is_null( self::$instance ) ) {
20
+ self::$instance = new self();
21
+
22
+ add_action( 'carousel_slider_image_gallery_loop', [ self::$instance, 'generate_image_data' ] );
23
+ add_action( 'carousel_slider_post_loop', [ self::$instance, 'generate_post_data' ] );
24
+ add_action( 'carousel_slider_product_loop', [ self::$instance, 'generate_product_data' ], 10, 2 );
25
+ // Output structured data.
26
+ add_action( 'wp_footer', [ self::$instance, 'output_structured_data' ], 90 );
27
+ }
28
+
29
+ return self::$instance;
30
+ }
31
+
32
+ /**
33
+ * Outputs structured data.
34
+ *
35
+ * Hooked into `wp_footer` action hook.
36
+ */
37
+ public function output_structured_data() {
38
+ $data = $this->get_structured_product_data();
39
+ if ( $data ) {
40
+ echo '<script type="application/ld+json">' . wp_json_encode( $data ) . '</script>' . "\n";
41
+ }
42
+ $gallery_data = $this->get_structured_image_data();
43
+ if ( $gallery_data ) {
44
+ echo '<script type="application/ld+json">' . wp_json_encode( $gallery_data ) . '</script>' . "\n";
45
+ }
46
+ $post_data = $this->get_structured_post_data();
47
+ if ( $post_data ) {
48
+ echo '<script type="application/ld+json">' . wp_json_encode( $post_data ) . '</script>' . "\n";
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Structures and returns product data.
54
+ * @return array
55
+ */
56
+ private function get_structured_product_data() {
57
+ $data = array(
58
+ '@context' => 'http://schema.org/',
59
+ "@graph" => $this->get_product_data()
60
+ );
61
+
62
+ return $this->get_product_data() ? $data : array();
63
+ }
64
+
65
+ /**
66
+ * Gets product data.
67
+ *
68
+ * @return array
69
+ */
70
+ private function get_product_data() {
71
+ return $this->_product_data;
72
+ }
73
+
74
+ /**
75
+ * Structures and returns image data.
76
+ * @return array
77
+ */
78
+ private function get_structured_image_data() {
79
+ $data = array(
80
+ '@context' => 'http://schema.org/',
81
+ "@type" => "ImageGallery",
82
+ "associatedMedia" => $this->get_image_data()
83
+ );
84
+
85
+ return $this->get_image_data() ? $data : array();
86
+ }
87
+
88
+ /**
89
+ * Get image data
90
+ *
91
+ * @return array
92
+ */
93
+ private function get_image_data() {
94
+ return $this->_image_data;
95
+ }
96
+
97
+ private function get_structured_post_data() {
98
+ $data = array(
99
+ '@context' => 'http://schema.org/',
100
+ "@graph" => $this->get_post_data()
101
+ );
102
+
103
+ return $this->get_post_data() ? $data : array();
104
+ }
105
+
106
+ private function get_post_data() {
107
+ return $this->_post_data;
108
+ }
109
+
110
+ /**
111
+ * Generates Image structured data.
112
+ *
113
+ * Hooked into `carousel_slider_image_gallery_loop` action hook.
114
+ *
115
+ * @param WP_Post $_post Post data (default: null).
116
+ */
117
+ public function generate_image_data( $_post ) {
118
+ $image = wp_get_attachment_image_src( $_post->ID, 'full' );
119
+ $markup['@type'] = 'ImageObject';
120
+ $markup['contentUrl'] = $image[0];
121
+ $markup['name'] = $_post->post_title;
122
+
123
+ $this->set_data( apply_filters( 'carousel_slider_structured_data_image', $markup, $_post ) );
124
+ }
125
+
126
+ /**
127
+ * Sets data.
128
+ *
129
+ * @param array $data Structured data.
130
+ *
131
+ * @return bool
132
+ */
133
+ private function set_data( $data ) {
134
+ if ( ! isset( $data['@type'] ) || ! preg_match( '|^[a-zA-Z]{1,20}$|', $data['@type'] ) ) {
135
+ return false;
136
+ }
137
+
138
+ if ( $data['@type'] == 'ImageObject' ) {
139
+ if ( ! $this->maybe_image_added( $data['contentUrl'] ) ) {
140
+ $this->_image_data[] = $data;
141
+ }
142
+ }
143
+
144
+ if ( $data['@type'] == 'Product' ) {
145
+ if ( ! $this->maybe_product_added( $data['@id'] ) ) {
146
+ $this->_product_data[] = $data;
147
+ }
148
+ }
149
+
150
+ if ( $data['@type'] == 'BlogPosting' ) {
151
+ if ( ! $this->maybe_post_added( $data['mainEntityOfPage']['@id'] ) ) {
152
+ $this->_post_data[] = $data;
153
+ }
154
+ }
155
+
156
+ return true;
157
+ }
158
+
159
+ /**
160
+ * Check if image is already added to list
161
+ *
162
+ * @param string $image_id
163
+ *
164
+ * @return boolean
165
+ */
166
+ private function maybe_image_added( $image_id = null ) {
167
+ $image_data = $this->get_image_data();
168
+ if ( count( $image_data ) > 0 ) {
169
+ $image_data = array_map( function ( $data ) {
170
+ return $data['contentUrl'];
171
+ }, $image_data );
172
+
173
+ return in_array( $image_id, $image_data );
174
+ }
175
+
176
+ return false;
177
+ }
178
+
179
+ /**
180
+ * Check if product is already added to list
181
+ *
182
+ * @param string $product_id
183
+ *
184
+ * @return boolean
185
+ */
186
+ private function maybe_product_added( $product_id = null ) {
187
+ $product_data = $this->get_product_data();
188
+ if ( count( $product_data ) > 0 ) {
189
+ $product_data = array_map( function ( $data ) {
190
+ return $data['@id'];
191
+ }, $product_data );
192
+
193
+ return in_array( $product_id, $product_data );
194
+ }
195
+
196
+ return false;
197
+ }
198
+
199
+ /**
200
+ * Check if post is already added to list
201
+ *
202
+ * @param string $post_id
203
+ *
204
+ * @return boolean
205
+ */
206
+ private function maybe_post_added( $post_id ) {
207
+ $post_data = $this->get_post_data();
208
+ if ( count( $post_data ) > 0 ) {
209
+ $post_data = array_map( function ( $data ) {
210
+ return $data['mainEntityOfPage']['@id'];
211
+ }, $post_data );
212
+
213
+ return in_array( $post_id, $post_data );
214
+ }
215
+
216
+ return false;
217
+ }
218
+
219
+ /**
220
+ * Generates post structured data.
221
+ *
222
+ * Hooked into `carousel_slider_post_loop` action hook.
223
+ *
224
+ * @param WP_Post $_post
225
+ */
226
+ public function generate_post_data( $_post ) {
227
+ if ( ! $_post instanceof WP_Post ) {
228
+ return;
229
+ }
230
+
231
+ $image = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'normal' );
232
+
233
+ $json['@type'] = 'BlogPosting';
234
+
235
+ $json['mainEntityOfPage'] = array(
236
+ '@type' => 'webpage',
237
+ '@id' => get_the_permalink(),
238
+ );
239
+
240
+
241
+ $json['publisher'] = array(
242
+ '@type' => 'organization',
243
+ 'name' => get_bloginfo( 'name' ),
244
+ );
245
+
246
+ $json['author'] = array(
247
+ '@type' => 'person',
248
+ 'name' => get_the_author(),
249
+ );
250
+
251
+ if ( $image ) {
252
+ $json['image'] = array(
253
+ '@type' => 'ImageObject',
254
+ 'url' => $image[0],
255
+ 'width' => $image[1],
256
+ 'height' => $image[2],
257
+ );
258
+ }
259
+
260
+ $json['datePublished'] = get_post_time( 'c' );
261
+ $json['dateModified'] = get_the_modified_date( 'c' );
262
+ $json['name'] = get_the_title();
263
+ $json['headline'] = $json['name'];
264
+ $json['description'] = get_the_excerpt();
265
+
266
+
267
+ $this->set_data( apply_filters( 'carousel_slider_structured_data_post', $json, $_post ) );
268
+ }
269
+
270
+ /**
271
+ * Generates Product structured data.
272
+ *
273
+ * Hooked into `carousel_slider_product_loop` action hook.
274
+ *
275
+ * @param WC_Product $product Product data (default: null).
276
+ * @param WP_Post $post
277
+ */
278
+ public function generate_product_data( $product, $post ) {
279
+ if ( ! $product instanceof WC_Product ) {
280
+ return;
281
+ }
282
+
283
+ if ( defined( 'WC_VERSION' ) && version_compare( WC_VERSION, "3.0.0", ">=" ) ) {
284
+ $name = $product->get_name();
285
+ $permalink = get_permalink( $product->get_id() );
286
+ } else {
287
+ $name = get_the_title( $post->ID );
288
+ $permalink = get_permalink( $post->ID );
289
+ }
290
+
291
+ $markup['@type'] = 'Product';
292
+ $markup['@id'] = $permalink;
293
+ $markup['url'] = $markup['@id'];
294
+ $markup['name'] = $name;
295
+
296
+ $this->set_data( apply_filters( 'carousel_slider_structured_data_product', $markup, $product ) );
297
+ }
298
+ }
classes/Integration/VisualComposerElement.php ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider\Integration;
4
+
5
+ defined( 'ABSPATH' ) || exit;
6
+
7
+ class VisualComposerElement {
8
+ /**
9
+ * The instance of the class
10
+ *
11
+ * @var self
12
+ */
13
+ private static $instance = null;
14
+
15
+ /**
16
+ * Ensures only one instance of this class is loaded or can be loaded.
17
+ *
18
+ * @return self
19
+ */
20
+ public static function init() {
21
+ if ( is_null( self::$instance ) ) {
22
+ self::$instance = new self();
23
+
24
+ add_action( 'init', array( self::$instance, 'integrate_with_vc' ) );
25
+ }
26
+
27
+ return self::$instance;
28
+ }
29
+
30
+ /**
31
+ * Integrate with visual composer
32
+ */
33
+ public function integrate_with_vc() {
34
+ // Check if Visual Composer is installed
35
+ if ( ! function_exists( 'vc_map' ) ) {
36
+ return;
37
+ }
38
+
39
+ vc_map( array(
40
+ "name" => __( "Carousel Slider", 'carousel-slider' ),
41
+ "description" => __( "Place Carousel Slider.", 'carousel-slider' ),
42
+ "base" => "carousel_slide",
43
+ "controls" => "full",
44
+ "icon" => CAROUSEL_SLIDER_ASSETS . '/static-images/logo.svg',
45
+ "category" => __( 'Content', 'carousel-slider' ),
46
+ "params" => array(
47
+ array(
48
+ "type" => "dropdown",
49
+ "holder" => "div",
50
+ "class" => "carousel-slider-id",
51
+ "param_name" => "id",
52
+ "value" => $this->carousels_list(),
53
+ "heading" => __( "Choose Carousel Slide", 'carousel-slider' ),
54
+ ),
55
+ ),
56
+ ) );
57
+ }
58
+
59
+ /**
60
+ * Generate array for carousel slider
61
+ *
62
+ * @return array
63
+ */
64
+ private function carousels_list(): array {
65
+ $carousels = get_posts( [
66
+ 'post_type' => 'carousels',
67
+ 'post_status' => 'publish',
68
+ 'posts_per_page' => - 1,
69
+ ] );
70
+
71
+ $result = [];
72
+
73
+ if ( count( $carousels ) ) {
74
+ foreach ( $carousels as $carousel ) {
75
+ $result[ esc_html( $carousel->post_title ) ] = $carousel->ID;
76
+ }
77
+ }
78
+
79
+ return $result;
80
+ }
81
+ }
classes/Plugin.php ADDED
@@ -0,0 +1,196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider;
4
+
5
+ use CarouselSlider\Admin\Admin;
6
+ use CarouselSlider\Admin\GutenbergBlock;
7
+ use CarouselSlider\Admin\Setting;
8
+ use CarouselSlider\Frontend\Frontend;
9
+ use CarouselSlider\Frontend\Preview;
10
+ use CarouselSlider\Frontend\Shortcode;
11
+ use CarouselSlider\Frontend\StructuredData;
12
+ use CarouselSlider\Integration\VisualComposerElement;
13
+ use CarouselSlider\Widget\CarouselSliderWidget;
14
+
15
+ defined( 'ABSPATH' ) || exit;
16
+
17
+ /**
18
+ * The main plugin handler class is responsible for initializing plugin. The
19
+ * class registers all the components required to run the plugin.
20
+ */
21
+ class Plugin {
22
+
23
+ /**
24
+ * The instance of the class
25
+ *
26
+ * @var self
27
+ */
28
+ private static $instance;
29
+
30
+ /**
31
+ * Holds various class instances
32
+ *
33
+ * @var array
34
+ */
35
+ private $container = [];
36
+
37
+ /**
38
+ * Ensures only one instance of the class is loaded or can be loaded.
39
+ *
40
+ * @return self
41
+ */
42
+ public static function init() {
43
+ if ( is_null( self::$instance ) ) {
44
+ self::$instance = new self();
45
+
46
+ add_action( 'plugins_loaded', [ self::$instance, 'includes' ] );
47
+ add_action( 'carousel_slider/activation', [ self::$instance, 'activation_includes' ] );
48
+ add_action( 'carousel_slider/deactivation', [ self::$instance, 'deactivation_includes' ] );
49
+
50
+ add_action( 'in_plugin_update_message-carousel-slider/carousel-slider.php',
51
+ [ self::$instance, 'in_plugin_update_message' ] );
52
+ }
53
+
54
+ return self::$instance;
55
+ }
56
+
57
+ /**
58
+ * Instantiate the required classes
59
+ *
60
+ * @return void
61
+ */
62
+ public function includes() {
63
+ $this->container['i18n'] = i18n::init();
64
+ $this->container['assets'] = Assets::init();
65
+ $this->container['widget'] = CarouselSliderWidget::init();
66
+ $this->container['vc_element'] = VisualComposerElement::init();
67
+ $this->container['shortcode'] = Shortcode::init();
68
+
69
+ // Load classes for admin area
70
+ if ( $this->is_request( 'admin' ) ) {
71
+ $this->admin_includes();
72
+ }
73
+
74
+ // Load classes for frontend area
75
+ if ( $this->is_request( 'frontend' ) ) {
76
+ $this->frontend_includes();
77
+ }
78
+
79
+ // Load classes for ajax functionality
80
+ if ( $this->is_request( 'ajax' ) ) {
81
+ $this->ajax_includes();
82
+ }
83
+
84
+ $this->modules_includes();
85
+ }
86
+
87
+ /**
88
+ * Include modules main classes
89
+ *
90
+ * @return void
91
+ */
92
+ public function modules_includes() {
93
+
94
+ }
95
+
96
+ /**
97
+ * Include admin classes
98
+ *
99
+ * @return void
100
+ */
101
+ public function admin_includes() {
102
+ $this->container['admin'] = Admin::init();
103
+ $this->container['setting'] = Setting::init();
104
+ $this->container['gutenberg_block'] = GutenbergBlock::init();
105
+ }
106
+
107
+ /**
108
+ * Include frontend classes
109
+ *
110
+ * @return void
111
+ */
112
+ public function frontend_includes() {
113
+ $this->container['frontend'] = Frontend::init();
114
+ $this->container['preview'] = Preview::init();
115
+ $this->container['structured_data'] = StructuredData::init();
116
+ }
117
+
118
+ /**
119
+ * Include frontend classes
120
+ *
121
+ * @return void
122
+ */
123
+ public function ajax_includes() {
124
+ $this->container['ajax'] = Ajax::init();
125
+ }
126
+
127
+ /**
128
+ * Run on plugin activation
129
+ *
130
+ * @return void
131
+ */
132
+ public function activation_includes() {
133
+ flush_rewrite_rules();
134
+ }
135
+
136
+ /**
137
+ * Run on plugin deactivation
138
+ *
139
+ * @return void
140
+ */
141
+ public function deactivation_includes() {
142
+ flush_rewrite_rules();
143
+ }
144
+
145
+ /**
146
+ * What type of request is this?
147
+ *
148
+ * @param string $type admin, ajax, rest, cron or frontend.
149
+ *
150
+ * @return bool
151
+ */
152
+ private function is_request( string $type ): bool {
153
+ switch ( $type ) {
154
+ case 'admin' :
155
+ return is_admin();
156
+ case 'ajax' :
157
+ return defined( 'DOING_AJAX' );
158
+ case 'rest' :
159
+ return defined( 'REST_REQUEST' );
160
+ case 'cron' :
161
+ return defined( 'DOING_CRON' );
162
+ case 'frontend' :
163
+ return ( ! is_admin() || defined( 'DOING_AJAX' ) ) && ! defined( 'DOING_CRON' );
164
+ }
165
+
166
+ return false;
167
+ }
168
+
169
+ /**
170
+ * Show in plugin update message
171
+ *
172
+ * @param array $plugin_data
173
+ */
174
+ public function in_plugin_update_message( array $plugin_data ) {
175
+ $current_version = CAROUSEL_SLIDER_VERSION;
176
+ $current_version_array = explode( '.', $current_version );
177
+ $new_version = $plugin_data['new_version'];
178
+ $new_version_array = explode( '.', $new_version );
179
+
180
+ $html = '';
181
+ if ( version_compare( $current_version_array[0], $new_version_array[0], '<' ) ) {
182
+ $html .= '</p><div class="cs_plugin_upgrade_notice extensions_warning major_update">';
183
+ $html .= '<div class="cs_plugin_upgrade_notice__title">';
184
+ $html .= sprintf( __( "<strong>%s</strong> version <strong>%s</strong> is a major update.", 'carousel-slider' ), $plugin_data['Title'], $new_version );
185
+ $html .= '</div>';
186
+ $html .= '<div class="cs_plugin_upgrade_notice__description">';
187
+ $html .= __( 'We made a lot of major changes to this version.', 'carousel-slider' ) . ' ';
188
+ $html .= __( 'We believe that all functionality will remain same after update (remember to refresh you cache plugin).', 'carousel-slider' ) . ' ';
189
+ $html .= __( 'Still make sure that you took a backup so you can role back if anything happen wrong to you.', 'carousel-slider' );
190
+ $html .= '</div>';
191
+ $html .= '</div><p class="dummy" style="display: none">';
192
+ }
193
+
194
+ echo apply_filters( 'carousel_slider/in_plugin_update_message', $html, $plugin_data );
195
+ }
196
+ }
classes/Supports/SettingAPI.php ADDED
@@ -0,0 +1,669 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider\Supports;
4
+
5
+ use Exception;
6
+
7
+ defined( 'ABSPATH' ) || exit;
8
+
9
+ class SettingAPI {
10
+ /**
11
+ * Setting page options
12
+ *
13
+ * @var array
14
+ */
15
+ private $options = array();
16
+
17
+ /**
18
+ * Setting page menu fields
19
+ *
20
+ * @var array
21
+ */
22
+ private $menu_fields = array();
23
+
24
+ /**
25
+ * Fields list
26
+ *
27
+ * @var array
28
+ */
29
+ private $fields = array();
30
+
31
+ /**
32
+ * Setting page tabs settings
33
+ *
34
+ * @var array
35
+ */
36
+ private $tabs = array();
37
+
38
+ /**
39
+ * Setting page form action attribute value
40
+ *
41
+ * @var string
42
+ */
43
+ private $action = 'options.php';
44
+
45
+
46
+ /**
47
+ * Filterable_Portfolio_Setting_API constructor.
48
+ */
49
+ public function __construct() {
50
+ if ( is_admin() ) {
51
+ add_action( 'admin_menu', array( $this, 'admin_menu' ) );
52
+ add_action( 'admin_init', array( $this, 'admin_init' ) );
53
+ }
54
+ }
55
+
56
+ /**
57
+ * Add new admin menu
58
+ *
59
+ * This method is accessible outside the class for creating menu
60
+ *
61
+ * @param array $menu_fields
62
+ *
63
+ * @throws Exception
64
+ */
65
+ public function add_menu( array $menu_fields ) {
66
+ if ( ! isset( $menu_fields['page_title'], $menu_fields['menu_title'], $menu_fields['menu_slug'] ) ) {
67
+ throw new Exception( 'Required key is not set properly for creating menu.' );
68
+ }
69
+
70
+ $this->menu_fields = $menu_fields;
71
+ }
72
+
73
+ /**
74
+ * Add new settings field
75
+ *
76
+ * This method is accessible outside the class for creating settings field
77
+ *
78
+ * @param array $field
79
+ *
80
+ * @throws Exception
81
+ */
82
+ public function add_field( array $field ) {
83
+ if ( ! isset( $field['id'], $field['name'] ) ) {
84
+ throw new Exception( 'Required key is not set properly for creating tab.' );
85
+ }
86
+
87
+ $this->fields[] = $field;
88
+ }
89
+
90
+ /**
91
+ * Add setting page tab
92
+ *
93
+ * This method is accessible outside the class for creating page tab
94
+ *
95
+ * @param array $tab
96
+ *
97
+ * @throws Exception
98
+ */
99
+ public function add_tab( array $tab ) {
100
+ if ( ! isset( $tab['id'], $tab['title'] ) ) {
101
+ throw new Exception( 'Required key is not set properly for creating tab.' );
102
+ }
103
+
104
+ $this->tabs[] = $tab;
105
+ }
106
+
107
+ /**
108
+ * Register setting and its sanitize callback.
109
+ */
110
+ public function admin_init() {
111
+ register_setting(
112
+ $this->menu_fields['option_name'],
113
+ $this->menu_fields['option_name'],
114
+ array( $this, 'sanitize_callback' )
115
+ );
116
+ }
117
+
118
+ /**
119
+ * Create admin menu
120
+ */
121
+ public function admin_menu() {
122
+ $page_title = $this->menu_fields['page_title'];
123
+ $menu_title = $this->menu_fields['menu_title'];
124
+ $menu_slug = $this->menu_fields['menu_slug'];
125
+ $capability = isset( $this->menu_fields['capability'] ) ? $this->menu_fields['capability'] : 'manage_options';
126
+ $parent_slug = isset( $this->menu_fields['parent_slug'] ) ? $this->menu_fields['parent_slug'] : null;
127
+
128
+ if ( $parent_slug ) {
129
+ add_submenu_page(
130
+ $parent_slug,
131
+ $page_title,
132
+ $menu_title,
133
+ $capability,
134
+ $menu_slug,
135
+ array( $this, 'page_content' )
136
+ );
137
+ } else {
138
+ add_menu_page(
139
+ $page_title,
140
+ $menu_title,
141
+ $capability,
142
+ $menu_slug,
143
+ array( $this, 'page_content' )
144
+ );
145
+ }
146
+ }
147
+
148
+ /**
149
+ * Load page content
150
+ */
151
+ public function page_content() {
152
+ ob_start(); ?>
153
+ <div class="wrap about-wrap">
154
+ <h1><?php echo $this->menu_fields['page_title']; ?></h1>
155
+ <div class="about-text"><?php echo $this->menu_fields['about_text']; ?></div>
156
+ <?php $this->option_page_tabs(); ?>
157
+ <form autocomplete="off" method="POST" action="<?php echo $this->action; ?>">
158
+ <?php
159
+ $this->get_options();
160
+ settings_fields( $this->menu_fields['option_name'] );
161
+ $this->setting_fields( $this->filter_fields_by_tab() );
162
+ submit_button();
163
+ ?>
164
+ </form>
165
+ </div>
166
+ <?php
167
+ echo ob_get_clean();
168
+ }
169
+
170
+ /**
171
+ * Generate Option Page Tabs
172
+ * @return void
173
+ */
174
+ private function option_page_tabs() {
175
+ if ( count( $this->tabs ) < 1 ) {
176
+ return;
177
+ }
178
+
179
+ $current_tab = isset ( $_GET['tab'] ) ? $_GET['tab'] : $this->tabs[0]['id'];
180
+ $page = $this->menu_fields['menu_slug'];
181
+
182
+ echo '<h2 class="nav-tab-wrapper wp-clearfix">';
183
+ foreach ( $this->tabs as $tab ) {
184
+ $class = ( $tab['id'] === $current_tab ) ? ' nav-tab-active' : '';
185
+ $page_url = esc_url( add_query_arg( array(
186
+ 'page' => $page,
187
+ 'tab' => $tab['id']
188
+ ), admin_url( $this->menu_fields['parent_slug'] ) ) );
189
+ echo '<a class="nav-tab' . $class . '" href="' . $page_url . '">' . $tab['title'] . '</a>';
190
+ }
191
+ echo '</h2>';
192
+ }
193
+
194
+ /**
195
+ * Filter settings fields by page tab
196
+ *
197
+ * @param string $current_tab
198
+ *
199
+ * @return array
200
+ */
201
+ public function filter_fields_by_tab( $current_tab = null ) {
202
+
203
+ if ( count( $this->tabs ) < 1 ) {
204
+ return $this->fields;
205
+ }
206
+
207
+ if ( ! $current_tab ) {
208
+ $current_tab = isset ( $_GET['tab'] ) ? $_GET['tab'] : $this->tabs[0]['id'];
209
+ }
210
+
211
+ $new_array = array();
212
+ if ( is_array( $this->fields ) && count( $this->fields ) > 0 ) {
213
+ foreach ( array_keys( $this->fields ) as $key ) {
214
+ if ( isset( $this->fields[ $key ]['tab'] ) ) {
215
+ $temp[ $key ] = $this->fields[ $key ]['tab'];
216
+ if ( $temp[ $key ] == $current_tab ) {
217
+ $new_array[ $key ] = $this->fields[ $key ];
218
+ }
219
+ } else {
220
+ if ( $current_tab == $this->tabs[0]['id'] ) {
221
+ $new_array[ $key ] = $this->fields[ $key ];
222
+ }
223
+ }
224
+ }
225
+ }
226
+
227
+ return $new_array;
228
+ }
229
+
230
+ /**
231
+ * Sanitize each setting field as needed
232
+ *
233
+ * @param array $input Contains all settings fields as array keys
234
+ *
235
+ * @return array
236
+ */
237
+ public function sanitize_callback( array $input ) {
238
+ $output_array = array();
239
+ $fields = $this->fields;
240
+ $options = (array) get_option( $this->menu_fields['option_name'] );
241
+ $options = array_filter( $options );
242
+
243
+ if ( empty( $options ) ) {
244
+ $options = (array) $this->get_options();
245
+ }
246
+
247
+ if ( count( $this->tabs ) > 0 ) {
248
+ parse_str( $_POST['_wp_http_referer'], $referrer );
249
+ $tab = isset( $referrer['tab'] ) ? $referrer['tab'] : $this->tabs[0]['id'];
250
+ $fields = $this->filter_fields_by_tab( $tab );
251
+ }
252
+
253
+ // Loop through each setting being saved and
254
+ // pass it through a sanitize filter
255
+ foreach ( $input as $key => $value ) {
256
+ foreach ( $fields as $field ) {
257
+ if ( $field['id'] == $key ) {
258
+ $rule = empty( $field['validate'] ) ? $field['type'] : $field['validate'];
259
+ $output_array[ $key ] = $this->validate( $value, $rule );
260
+ }
261
+ }
262
+ }
263
+
264
+ return array_merge( $options, $output_array );
265
+ }
266
+
267
+ /**
268
+ * Get options parsed with default value
269
+ * @return array
270
+ */
271
+ public function get_options() {
272
+ $options_array = array();
273
+
274
+ foreach ( $this->fields as $value ) {
275
+ $std_value = ( isset( $value['std'] ) ) ? $value['std'] : '';
276
+ $options_array[ $value['id'] ] = $std_value;
277
+ }
278
+
279
+ $options = wp_parse_args(
280
+ get_option( $this->menu_fields['option_name'] ),
281
+ $options_array
282
+ );
283
+
284
+ return $this->options = $options;
285
+ }
286
+
287
+ /**
288
+ * Validate the option's value
289
+ *
290
+ * @param mixed $input
291
+ * @param string $validation_rule
292
+ *
293
+ * @return mixed
294
+ */
295
+ private function validate( $input, $validation_rule = 'text' ) {
296
+ switch ( $validation_rule ) {
297
+ case 'text':
298
+ return sanitize_text_field( $input );
299
+ break;
300
+
301
+ case 'number':
302
+ return is_int( $input ) ? trim( $input ) : intval( $input );
303
+ break;
304
+
305
+ case 'url':
306
+ return esc_url_raw( trim( $input ) );
307
+ break;
308
+
309
+ case 'email':
310
+ return sanitize_email( $input );
311
+ break;
312
+
313
+ case 'checkbox':
314
+ return ( $input == 1 ) ? 1 : 0;
315
+ break;
316
+
317
+ case 'multi_checkbox':
318
+ return $input;
319
+ break;
320
+
321
+ case 'radio':
322
+ return sanitize_text_field( $input );
323
+ break;
324
+
325
+ case 'select':
326
+ return sanitize_text_field( $input );
327
+ break;
328
+
329
+ case 'date':
330
+ return date( 'F d, Y', strtotime( $input ) );
331
+ break;
332
+
333
+ case 'textarea':
334
+ return wp_filter_nohtml_kses( $input );
335
+ break;
336
+
337
+ case 'inlinehtml':
338
+ return wp_filter_kses( force_balance_tags( $input ) );
339
+ break;
340
+
341
+ case 'linebreaks':
342
+ return wp_strip_all_tags( $input );
343
+ break;
344
+
345
+ case 'wp_editor':
346
+ return wp_kses_post( $input );
347
+ break;
348
+
349
+ default:
350
+ return sanitize_text_field( $input );
351
+ break;
352
+ }
353
+ }
354
+
355
+ /**
356
+ * Settings fields
357
+ *
358
+ * @param array $fields
359
+ *
360
+ * @return void
361
+ */
362
+ private function setting_fields( $fields = null ) {
363
+ $fields = is_array( $fields ) ? $fields : $this->fields;
364
+
365
+ $table = "";
366
+ $table .= "<table class='form-table'>";
367
+
368
+ foreach ( $fields as $field ) {
369
+ $name = sprintf( '%s[%s]', $this->menu_fields['option_name'], $field['id'] );
370
+ $type = isset( $field['type'] ) ? $field['type'] : 'text';
371
+ $value = isset( $this->options[ $field['id'] ] ) ? $this->options[ $field['id'] ] : '';
372
+
373
+ $table .= "<tr>";
374
+ $table .= sprintf( '<th scope="row"><label for="%1$s">%2$s</label></th>', $field['id'],
375
+ $field['name'] );
376
+ $table .= "<td>";
377
+
378
+ if ( method_exists( $this, $type ) ) {
379
+ $table .= $this->$type( $field, $name, $value );
380
+ } else {
381
+ $table .= $this->text( $field, $name, $value );
382
+ }
383
+
384
+ if ( ! empty( $field['desc'] ) ) {
385
+ $table .= sprintf( '<p class="description">%s</p>', $field['desc'] );
386
+ }
387
+ $table .= "</td>";
388
+ $table .= "</tr>";
389
+ }
390
+
391
+ $table .= "</table>";
392
+ echo $table;
393
+ }
394
+
395
+ /**
396
+ * text input field
397
+ *
398
+ * @param array $field
399
+ * @param string $name
400
+ * @param string $value
401
+ *
402
+ * @return string
403
+ */
404
+ public function text( $field, $name, $value ) {
405
+ return sprintf( '<input type="text" class="regular-text" value="%1$s" id="%2$s" name="%3$s">', $value,
406
+ $field['id'], $name );
407
+ }
408
+
409
+ /**
410
+ * email input field
411
+ *
412
+ * @param array $field
413
+ * @param string $name
414
+ * @param string $value
415
+ *
416
+ * @return string
417
+ */
418
+ public function email( $field, $name, $value ) {
419
+ return sprintf( '<input type="email" class="regular-text" value="%1$s" id="%2$s" name="%3$s">', $value,
420
+ $field['id'], $name );
421
+ }
422
+
423
+ /**
424
+ * password input field
425
+ *
426
+ * @param array $field
427
+ * @param string $name
428
+ * @param string $value
429
+ *
430
+ * @return string
431
+ */
432
+ public function password( $field, $name, $value ) {
433
+ return sprintf( '<input type="password" class="regular-text" value="" id="%2$s" name="%3$s">', $value,
434
+ $field['id'], $name );
435
+ }
436
+
437
+ /**
438
+ * number input field
439
+ *
440
+ * @param array $field
441
+ * @param string $name
442
+ * @param string $value
443
+ *
444
+ * @return string
445
+ */
446
+ public function number( $field, $name, $value ) {
447
+ return sprintf( '<input type="number" class="regular-text" value="%1$s" id="%2$s" name="%3$s">', $value,
448
+ $field['id'], $name );
449
+ }
450
+
451
+ /**
452
+ * url input field
453
+ *
454
+ * @param array $field
455
+ * @param string $name
456
+ * @param string $value
457
+ *
458
+ * @return string
459
+ */
460
+ public function url( $field, $name, $value ) {
461
+ return sprintf( '<input type="url" class="regular-text" value="%1$s" id="%2$s" name="%3$s">', $value,
462
+ $field['id'], $name );
463
+ }
464
+
465
+ /**
466
+ * color input field
467
+ *
468
+ * @param array $field
469
+ * @param string $name
470
+ * @param string $value
471
+ *
472
+ * @return string
473
+ */
474
+ public function color( $field, $name, $value ) {
475
+ $default_color = ( isset( $field['std'] ) ) ? $field['std'] : "";
476
+
477
+ return sprintf( '<input type="text" class="color-picker" value="%1$s" id="%2$s" name="%3$s" data-alpha="true" data-default-color="%4$s">',
478
+ $value, $field['id'], $name, $default_color );
479
+ }
480
+
481
+ /**
482
+ * date input field
483
+ *
484
+ * @param array $field
485
+ * @param string $name
486
+ * @param string $value
487
+ *
488
+ * @return string
489
+ */
490
+ public function date( $field, $name, $value ) {
491
+ $value = date( "F d, Y", strtotime( $value ) );
492
+
493
+ return sprintf( '<input type="text" class="regular-text datepicker" value="%1$s" id="%2$s" name="%3$s">',
494
+ $value, $field['id'], $name );
495
+ }
496
+
497
+ /**
498
+ * textarea input field
499
+ *
500
+ * @param array $field
501
+ * @param string $name
502
+ * @param string $value
503
+ *
504
+ * @return string
505
+ */
506
+ public function textarea( $field, $name, $value ) {
507
+ $rows = ( isset( $field['rows'] ) ) ? $field['rows'] : 5;
508
+ $cols = ( isset( $field['cols'] ) ) ? $field['cols'] : 40;
509
+ $placeholder = ( isset( $field['placeholder'] ) ) ? sprintf( 'placeholder="%s"',
510
+ esc_attr( $field['placeholder'] ) ) : '';
511
+
512
+ return '<textarea id="' . $field['id'] . '" name="' . $name . '" rows="' . $rows . '" cols="' . $cols . '" ' . $placeholder . '>' . $value . '</textarea>';
513
+ }
514
+
515
+ /**
516
+ * checkbox input field
517
+ *
518
+ * @param array $field
519
+ * @param string $name
520
+ * @param string $value
521
+ *
522
+ * @return string
523
+ */
524
+ public function checkbox( $field, $name, $value ) {
525
+ $checked = ( 1 == $value ) ? 'checked' : '';
526
+ $table = '<input type="hidden" name="' . $name . '" value="0">';
527
+ $table .= '<fieldset><legend class="screen-reader-text"><span>' . $field['name'] . '</span></legend>';
528
+ $table .= '<label for="' . $field['id'] . '">';
529
+ $table .= '<input type="checkbox" value="1" id="' . $field['id'] . '" name="' . $name . '" ' . $checked . '>';
530
+ $table .= $field['name'] . '</label></fieldset>';
531
+
532
+ return $table;
533
+ }
534
+
535
+ /**
536
+ * multi checkbox input field
537
+ *
538
+ * @param array $field
539
+ * @param string $name
540
+ * @param array $value
541
+ *
542
+ * @return string
543
+ */
544
+ public function multi_checkbox( $field, $name, $value ) {
545
+ $table = "<fieldset>";
546
+ $name = $name . "[]";
547
+
548
+ $table .= sprintf( '<input type="hidden" name="%1$s" value="0">', $name );
549
+ foreach ( $field['options'] as $key => $label ) {
550
+ $checked = ( in_array( $key, $value ) ) ? 'checked="checked"' : '';
551
+ $table .= '<label for="' . $key . '"><input type="checkbox" value="' . $key . '" id="' . $key . '" name="' . $name . '" ' . $checked . '>' . $label . '</label><br>';
552
+ }
553
+ $table .= "</fieldset>";
554
+
555
+ return $table;
556
+ }
557
+
558
+ /**
559
+ * radio input field
560
+ *
561
+ * @param array $field
562
+ * @param string $name
563
+ * @param string $value
564
+ *
565
+ * @return string
566
+ */
567
+ public function radio( $field, $name, $value ) {
568
+ $table = '<fieldset><legend class="screen-reader-text"><span>' . $field['name'] . '</span></legend><p>';
569
+
570
+ foreach ( $field['options'] as $key => $label ) {
571
+
572
+ $checked = ( $value == $key ) ? 'checked="checked"' : '';
573
+ $table .= '<label><input type="radio" ' . $checked . ' value="' . $key . '" name="' . $name . '">' . $label . '</label><br>';
574
+ }
575
+ $table .= "</p></fieldset>";
576
+
577
+ return $table;
578
+ }
579
+
580
+ /**
581
+ * select input field
582
+ *
583
+ * @param array $field
584
+ * @param string $name
585
+ * @param string $value
586
+ *
587
+ * @return string
588
+ */
589
+ public function select( $field, $name, $value ) {
590
+ $table = sprintf( '<select id="%1$s" name="%2$s" class="regular-text">', $field['id'], $name );
591
+ foreach ( $field['options'] as $key => $label ) {
592
+ $selected = ( $value == $key ) ? 'selected="selected"' : '';
593
+ $table .= '<option value="' . $key . '" ' . $selected . '>' . $label . '</option>';
594
+ }
595
+ $table .= "</select>";
596
+
597
+ return $table;
598
+ }
599
+
600
+ /**
601
+ * Get available image sizes
602
+ *
603
+ * @param $field
604
+ * @param $name
605
+ * @param $value
606
+ *
607
+ * @return string
608
+ */
609
+ public function image_sizes( $field, $name, $value ) {
610
+
611
+ global $_wp_additional_image_sizes;
612
+
613
+ $sizes = array();
614
+
615
+ foreach ( get_intermediate_image_sizes() as $_size ) {
616
+ if ( in_array( $_size, array( 'thumbnail', 'medium', 'medium_large', 'large' ) ) ) {
617
+
618
+ $width = get_option( "{$_size}_size_w" );
619
+ $height = get_option( "{$_size}_size_h" );
620
+ $crop = (bool) get_option( "{$_size}_crop" ) ? 'hard' : 'soft';
621
+
622
+ $sizes[ $_size ] = "{$_size} - {$width}x{$height} ($crop crop)";
623
+
624
+ } elseif ( isset( $_wp_additional_image_sizes[ $_size ] ) ) {
625
+
626
+ $width = $_wp_additional_image_sizes[ $_size ]['width'];
627
+ $height = $_wp_additional_image_sizes[ $_size ]['height'];
628
+ $crop = $_wp_additional_image_sizes[ $_size ]['crop'] ? 'hard' : 'soft';
629
+
630
+ $sizes[ $_size ] = "{$_size} - {$width}x{$height} ($crop crop)";
631
+ }
632
+ }
633
+
634
+ $sizes = array_merge( $sizes, array( 'full' => 'original uploaded image' ) );
635
+
636
+ $table = '<select name="' . $name . '" id="' . $field['id'] . '" class="regular-text select2">';
637
+ foreach ( $sizes as $key => $option ) {
638
+ $selected = ( $value == $key ) ? ' selected="selected"' : '';
639
+ $table .= '<option value="' . $key . '" ' . $selected . '>' . $option . '</option>';
640
+ }
641
+ $table .= '</select>';
642
+
643
+ return $table;
644
+ }
645
+
646
+ /**
647
+ * wp_editor input field
648
+ *
649
+ * @param array $field
650
+ * @param string $name
651
+ * @param string $value
652
+ *
653
+ * @return string
654
+ */
655
+ public function wp_editor( $field, $name, $value ) {
656
+ ob_start();
657
+ echo "<div class='sp-wp-editor-container'>";
658
+ wp_editor( $value, $field['id'], array(
659
+ 'textarea_name' => $name,
660
+ 'tinymce' => false,
661
+ 'media_buttons' => false,
662
+ 'textarea_rows' => isset( $field['rows'] ) ? $field['rows'] : 6,
663
+ 'quicktags' => array( "buttons" => "strong,em,link,img,ul,li,ol" ),
664
+ ) );
665
+ echo "</div>";
666
+
667
+ return ob_get_clean();
668
+ }
669
+ }
widgets/widget-carousel_slider.php → classes/Widget/CarouselSliderWidget.php RENAMED
@@ -1,10 +1,66 @@
1
  <?php
2
- // If this file is called directly, abort.
3
- if ( ! defined( 'WPINC' ) ) {
4
- die;
5
- }
6
 
7
- class Carousel_Slider_Widget extends WP_Widget {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
9
  /**
10
  * Sets up the widgets name etc
@@ -25,8 +81,7 @@ class Carousel_Slider_Widget extends WP_Widget {
25
  * @param array $instance The settings for the particular instance of the widget.
26
  */
27
  public function widget( $args, $instance ) {
28
-
29
- $title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : null;
30
  $carousel_id = isset( $instance['carousel_id'] ) ? absint( $instance['carousel_id'] ) : 0;
31
 
32
  if ( ! $carousel_id ) {
@@ -51,7 +106,7 @@ class Carousel_Slider_Widget extends WP_Widget {
51
  * @return void
52
  */
53
  public function form( $instance ) {
54
- $carousels = $this->carousels_list();
55
  $carousel_id = ! empty( $instance['carousel_id'] ) ? absint( $instance['carousel_id'] ) : null;
56
  $title = ! empty( $instance['title'] ) ? esc_attr( $instance['title'] ) : '';
57
 
@@ -63,11 +118,11 @@ class Carousel_Slider_Widget extends WP_Widget {
63
  printf( '<p><label>%s</label>', __( 'Choose Slide', 'carousel-slider' ) );
64
  printf( '<select class="widefat" name="%s">', $this->get_field_name( 'carousel_id' ) );
65
  foreach ( $carousels as $carousel ) {
66
- $selected = $carousel->id == $carousel_id ? 'selected="selected"' : '';
67
  printf(
68
  '<option value="%1$d" %3$s>%2$s</option>',
69
- $carousel->id,
70
- $carousel->title,
71
  $selected
72
  );
73
  }
@@ -82,32 +137,6 @@ class Carousel_Slider_Widget extends WP_Widget {
82
  }
83
  }
84
 
85
- /**
86
- * Get the list of carousel sliders
87
- *
88
- * @return array
89
- */
90
- private function carousels_list() {
91
- $carousels = get_posts( array(
92
- 'post_type' => 'carousels',
93
- 'post_status' => 'publish',
94
- 'posts_per_page' => - 1,
95
- 'orderby' => 'date',
96
- 'order' => 'DESC',
97
- ) );
98
-
99
- if ( count( $carousels ) < 1 ) {
100
- return array();
101
- }
102
-
103
- return array_map( function ( $carousel ) {
104
- return (object) array(
105
- 'id' => absint( $carousel->ID ),
106
- 'title' => esc_html( $carousel->post_title ),
107
- );
108
- }, $carousels );
109
- }
110
-
111
  /**
112
  * Processing widget options on save
113
  *
@@ -122,10 +151,4 @@ class Carousel_Slider_Widget extends WP_Widget {
122
 
123
  return $old_instance;
124
  }
125
-
126
- public static function register() {
127
- register_widget( __CLASS__ );
128
- }
129
  }
130
-
131
- add_action( 'widgets_init', array( 'Carousel_Slider_Widget', 'register' ) );
1
  <?php
 
 
 
 
2
 
3
+ namespace CarouselSlider\Widget;
4
+
5
+ use WP_Widget;
6
+
7
+ defined( 'ABSPATH' ) || exit;
8
+
9
+ class CarouselSliderWidget extends WP_Widget {
10
+
11
+ /**
12
+ * The instance of the class
13
+ *
14
+ * @var self
15
+ */
16
+ protected static $instance;
17
+
18
+ /**
19
+ * Ensures only one instance of the class is loaded or can be loaded.
20
+ *
21
+ * @return self
22
+ */
23
+ public static function init() {
24
+ if ( is_null( self::$instance ) ) {
25
+ self::$instance = new self();
26
+
27
+ add_action( 'widgets_init', [ self::$instance, 'register' ] );
28
+ }
29
+
30
+ return self::$instance;
31
+ }
32
+
33
+ /**
34
+ * Register current class as widget
35
+ */
36
+ public static function register() {
37
+ register_widget( __CLASS__ );
38
+ }
39
+
40
+ /**
41
+ * Get the list of carousel sliders
42
+ *
43
+ * @return array
44
+ */
45
+ private static function carousels_list(): array {
46
+ $posts = get_posts( [
47
+ 'post_type' => 'carousels',
48
+ 'post_status' => 'publish',
49
+ 'posts_per_page' => 100,
50
+ 'orderby' => 'date',
51
+ 'order' => 'DESC',
52
+ ] );
53
+
54
+ $items = [];
55
+
56
+ if ( count( $posts ) ) {
57
+ foreach ( $posts as $post ) {
58
+ $items[] = [ 'id' => $post->ID, 'title' => $post->post_title ];
59
+ }
60
+ }
61
+
62
+ return $items;
63
+ }
64
 
65
  /**
66
  * Sets up the widgets name etc
81
  * @param array $instance The settings for the particular instance of the widget.
82
  */
83
  public function widget( $args, $instance ) {
84
+ $title = isset( $instance['title'] ) ? esc_html( $instance['title'] ) : null;
 
85
  $carousel_id = isset( $instance['carousel_id'] ) ? absint( $instance['carousel_id'] ) : 0;
86
 
87
  if ( ! $carousel_id ) {
106
  * @return void
107
  */
108
  public function form( $instance ) {
109
+ $carousels = static::carousels_list();
110
  $carousel_id = ! empty( $instance['carousel_id'] ) ? absint( $instance['carousel_id'] ) : null;
111
  $title = ! empty( $instance['title'] ) ? esc_attr( $instance['title'] ) : '';
112
 
118
  printf( '<p><label>%s</label>', __( 'Choose Slide', 'carousel-slider' ) );
119
  printf( '<select class="widefat" name="%s">', $this->get_field_name( 'carousel_id' ) );
120
  foreach ( $carousels as $carousel ) {
121
+ $selected = $carousel['id'] == $carousel_id ? 'selected="selected"' : '';
122
  printf(
123
  '<option value="%1$d" %3$s>%2$s</option>',
124
+ absint( $carousel['id'] ),
125
+ esc_html( $carousel['title'] ),
126
  $selected
127
  );
128
  }
137
  }
138
  }
139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  /**
141
  * Processing widget options on save
142
  *
151
 
152
  return $old_instance;
153
  }
 
 
 
 
154
  }
 
 
classes/i18n.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CarouselSlider;
4
+
5
+ defined( 'ABSPATH' ) || exit;
6
+
7
+ class i18n {
8
+
9
+ /**
10
+ * The instance of the class
11
+ *
12
+ * @var self
13
+ */
14
+ protected static $instance;
15
+
16
+ /**
17
+ * Ensures only one instance of the class is loaded or can be loaded.
18
+ *
19
+ * @return self
20
+ */
21
+ public static function init() {
22
+ if ( is_null( self::$instance ) ) {
23
+ self::$instance = new self();
24
+
25
+ add_action( 'init', [ self::$instance, 'load_plugin_textdomain' ] );
26
+ }
27
+
28
+ return self::$instance;
29
+ }
30
+
31
+ /**
32
+ * Load the plugin text domain for translation.
33
+ *
34
+ * @return void
35
+ */
36
+ public function load_plugin_textdomain() {
37
+ $domain = CAROUSEL_SLIDER;
38
+ $lan_dir = CAROUSEL_SLIDER_PATH . '/languages/';
39
+
40
+ load_plugin_textdomain( $domain, false, $lan_dir );
41
+ }
42
+ }
dummy-data/carousel-slider.xml DELETED
@@ -1,739 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" ?>
2
-
3
- <rss version="2.0"
4
- xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
5
- xmlns:content="http://purl.org/rss/1.0/modules/content/"
6
- xmlns:wfw="http://wellformedweb.org/CommentAPI/"
7
- xmlns:dc="http://purl.org/dc/elements/1.1/"
8
- xmlns:wp="http://wordpress.org/export/1.2/"
9
- >
10
-
11
- <channel>
12
- <title>WordPress</title>
13
- <link>http://wordpress.dev</link>
14
- <description>Just another WordPress site</description>
15
- <pubDate>Thu, 12 Jan 2017 15:03:49 +0000</pubDate>
16
- <language>en-US</language>
17
- <wp:wxr_version>1.2</wp:wxr_version>
18
- <wp:base_site_url>http://wordpress.dev</wp:base_site_url>
19
- <wp:base_blog_url>http://wordpress.dev</wp:base_blog_url>
20
-
21
- <wp:author><wp:author_id>1</wp:author_id><wp:author_login><![CDATA[sayful]]></wp:author_login><wp:author_email><![CDATA[sayful@gmail.com]]></wp:author_email><wp:author_display_name><![CDATA[sayful]]></wp:author_display_name><wp:author_first_name><![CDATA[]]></wp:author_first_name><wp:author_last_name><![CDATA[]]></wp:author_last_name></wp:author>
22
-
23
-
24
- <generator>https://wordpress.org/?v=4.7.2-alpha-39883</generator>
25
-
26
- <item>
27
- <title>Image carousel example from URL</title>
28
- <link>http://wordpress.dev/?carousels=image-carousel-from-url-example</link>
29
- <pubDate>Thu, 12 Jan 2017 14:51:13 +0000</pubDate>
30
- <dc:creator><![CDATA[sayful]]></dc:creator>
31
- <guid isPermaLink="false">http://wordpress.dev/?post_type=carousels&#038;p=1717</guid>
32
- <description></description>
33
- <content:encoded><![CDATA[]]></content:encoded>
34
- <excerpt:encoded><![CDATA[]]></excerpt:encoded>
35
- <wp:post_id>1717</wp:post_id>
36
- <wp:post_date><![CDATA[2017-01-12 14:51:13]]></wp:post_date>
37
- <wp:post_date_gmt><![CDATA[2017-01-12 14:51:13]]></wp:post_date_gmt>
38
- <wp:comment_status><![CDATA[closed]]></wp:comment_status>
39
- <wp:ping_status><![CDATA[closed]]></wp:ping_status>
40
- <wp:post_name><![CDATA[image-carousel-from-url-example]]></wp:post_name>
41
- <wp:status><![CDATA[publish]]></wp:status>
42
- <wp:post_parent>0</wp:post_parent>
43
- <wp:menu_order>0</wp:menu_order>
44
- <wp:post_type><![CDATA[carousels]]></wp:post_type>
45
- <wp:post_password><![CDATA[]]></wp:post_password>
46
- <wp:is_sticky>0</wp:is_sticky>
47
- <wp:postmeta>
48
- <wp:meta_key><![CDATA[_edit_last]]></wp:meta_key>
49
- <wp:meta_value><![CDATA[1]]></wp:meta_value>
50
- </wp:postmeta>
51
- <wp:postmeta>
52
- <wp:meta_key><![CDATA[_slide_type]]></wp:meta_key>
53
- <wp:meta_value><![CDATA[image-carousel-url]]></wp:meta_value>
54
- </wp:postmeta>
55
- <wp:postmeta>
56
- <wp:meta_key><![CDATA[_wpdh_image_ids]]></wp:meta_key>
57
- <wp:meta_value><![CDATA[]]></wp:meta_value>
58
- </wp:postmeta>
59
- <wp:postmeta>
60
- <wp:meta_key><![CDATA[_post_query_type]]></wp:meta_key>
61
- <wp:meta_value><![CDATA[latest_posts]]></wp:meta_value>
62
- </wp:postmeta>
63
- <wp:postmeta>
64
- <wp:meta_key><![CDATA[_post_date_after]]></wp:meta_key>
65
- <wp:meta_value><![CDATA[]]></wp:meta_value>
66
- </wp:postmeta>
67
- <wp:postmeta>
68
- <wp:meta_key><![CDATA[_post_date_before]]></wp:meta_key>
69
- <wp:meta_value><![CDATA[]]></wp:meta_value>
70
- </wp:postmeta>
71
- <wp:postmeta>
72
- <wp:meta_key><![CDATA[_posts_per_page]]></wp:meta_key>
73
- <wp:meta_value><![CDATA[12]]></wp:meta_value>
74
- </wp:postmeta>
75
- <wp:postmeta>
76
- <wp:meta_key><![CDATA[_post_order]]></wp:meta_key>
77
- <wp:meta_value><![CDATA[DESC]]></wp:meta_value>
78
- </wp:postmeta>
79
- <wp:postmeta>
80
- <wp:meta_key><![CDATA[_post_orderby]]></wp:meta_key>
81
- <wp:meta_value><![CDATA[ID]]></wp:meta_value>
82
- </wp:postmeta>
83
- <wp:postmeta>
84
- <wp:meta_key><![CDATA[_post_height]]></wp:meta_key>
85
- <wp:meta_value><![CDATA[450]]></wp:meta_value>
86
- </wp:postmeta>
87
- <wp:postmeta>
88
- <wp:meta_key><![CDATA[_video_url]]></wp:meta_key>
89
- <wp:meta_value><![CDATA[]]></wp:meta_value>
90
- </wp:postmeta>
91
- <wp:postmeta>
92
- <wp:meta_key><![CDATA[_video_width]]></wp:meta_key>
93
- <wp:meta_value><![CDATA[560]]></wp:meta_value>
94
- </wp:postmeta>
95
- <wp:postmeta>
96
- <wp:meta_key><![CDATA[_video_height]]></wp:meta_key>
97
- <wp:meta_value><![CDATA[315]]></wp:meta_value>
98
- </wp:postmeta>
99
- <wp:postmeta>
100
- <wp:meta_key><![CDATA[_slide_by]]></wp:meta_key>
101
- <wp:meta_value><![CDATA[1]]></wp:meta_value>
102
- </wp:postmeta>
103
- <wp:postmeta>
104
- <wp:meta_key><![CDATA[_margin_right]]></wp:meta_key>
105
- <wp:meta_value><![CDATA[10]]></wp:meta_value>
106
- </wp:postmeta>
107
- <wp:postmeta>
108
- <wp:meta_key><![CDATA[_inifnity_loop]]></wp:meta_key>
109
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
110
- </wp:postmeta>
111
- <wp:postmeta>
112
- <wp:meta_key><![CDATA[_lazy_load_image]]></wp:meta_key>
113
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
114
- </wp:postmeta>
115
- <wp:postmeta>
116
- <wp:meta_key><![CDATA[_show_attachment_title]]></wp:meta_key>
117
- <wp:meta_value><![CDATA[off]]></wp:meta_value>
118
- </wp:postmeta>
119
- <wp:postmeta>
120
- <wp:meta_key><![CDATA[_show_attachment_caption]]></wp:meta_key>
121
- <wp:meta_value><![CDATA[off]]></wp:meta_value>
122
- </wp:postmeta>
123
- <wp:postmeta>
124
- <wp:meta_key><![CDATA[_image_size]]></wp:meta_key>
125
- <wp:meta_value><![CDATA[thumbnail]]></wp:meta_value>
126
- </wp:postmeta>
127
- <wp:postmeta>
128
- <wp:meta_key><![CDATA[_image_target]]></wp:meta_key>
129
- <wp:meta_value><![CDATA[_blank]]></wp:meta_value>
130
- </wp:postmeta>
131
- <wp:postmeta>
132
- <wp:meta_key><![CDATA[_nav_button]]></wp:meta_key>
133
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
134
- </wp:postmeta>
135
- <wp:postmeta>
136
- <wp:meta_key><![CDATA[_dot_nav]]></wp:meta_key>
137
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
138
- </wp:postmeta>
139
- <wp:postmeta>
140
- <wp:meta_key><![CDATA[_nav_color]]></wp:meta_key>
141
- <wp:meta_value><![CDATA[#9e9e9e]]></wp:meta_value>
142
- </wp:postmeta>
143
- <wp:postmeta>
144
- <wp:meta_key><![CDATA[_nav_active_color]]></wp:meta_key>
145
- <wp:meta_value><![CDATA[#4caf50]]></wp:meta_value>
146
- </wp:postmeta>
147
- <wp:postmeta>
148
- <wp:meta_key><![CDATA[_autoplay]]></wp:meta_key>
149
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
150
- </wp:postmeta>
151
- <wp:postmeta>
152
- <wp:meta_key><![CDATA[_autoplay_timeout]]></wp:meta_key>
153
- <wp:meta_value><![CDATA[5000]]></wp:meta_value>
154
- </wp:postmeta>
155
- <wp:postmeta>
156
- <wp:meta_key><![CDATA[_autoplay_speed]]></wp:meta_key>
157
- <wp:meta_value><![CDATA[500]]></wp:meta_value>
158
- </wp:postmeta>
159
- <wp:postmeta>
160
- <wp:meta_key><![CDATA[_autoplay_pause]]></wp:meta_key>
161
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
162
- </wp:postmeta>
163
- <wp:postmeta>
164
- <wp:meta_key><![CDATA[_items]]></wp:meta_key>
165
- <wp:meta_value><![CDATA[4]]></wp:meta_value>
166
- </wp:postmeta>
167
- <wp:postmeta>
168
- <wp:meta_key><![CDATA[_items_desktop]]></wp:meta_key>
169
- <wp:meta_value><![CDATA[4]]></wp:meta_value>
170
- </wp:postmeta>
171
- <wp:postmeta>
172
- <wp:meta_key><![CDATA[_items_small_desktop]]></wp:meta_key>
173
- <wp:meta_value><![CDATA[4]]></wp:meta_value>
174
- </wp:postmeta>
175
- <wp:postmeta>
176
- <wp:meta_key><![CDATA[_items_portrait_tablet]]></wp:meta_key>
177
- <wp:meta_value><![CDATA[3]]></wp:meta_value>
178
- </wp:postmeta>
179
- <wp:postmeta>
180
- <wp:meta_key><![CDATA[_items_small_portrait_tablet]]></wp:meta_key>
181
- <wp:meta_value><![CDATA[2]]></wp:meta_value>
182
- </wp:postmeta>
183
- <wp:postmeta>
184
- <wp:meta_key><![CDATA[_items_portrait_mobile]]></wp:meta_key>
185
- <wp:meta_value><![CDATA[1]]></wp:meta_value>
186
- </wp:postmeta>
187
- <wp:postmeta>
188
- <wp:meta_key><![CDATA[_post_categories]]></wp:meta_key>
189
- <wp:meta_value><![CDATA[]]></wp:meta_value>
190
- </wp:postmeta>
191
- <wp:postmeta>
192
- <wp:meta_key><![CDATA[_post_tags]]></wp:meta_key>
193
- <wp:meta_value><![CDATA[]]></wp:meta_value>
194
- </wp:postmeta>
195
- <wp:postmeta>
196
- <wp:meta_key><![CDATA[_post_in]]></wp:meta_key>
197
- <wp:meta_value><![CDATA[]]></wp:meta_value>
198
- </wp:postmeta>
199
- <wp:postmeta>
200
- <wp:meta_key><![CDATA[_images_urls]]></wp:meta_key>
201
- <wp:meta_value><![CDATA[a:9:{i:0;a:5:{s:3:"url";s:39:"http://lorempixel.com/400/400/sports/1/";s:5:"title";s:27:"Lorempixel Sports Image one";s:7:"caption";s:27:"Lorempixel Sports Image one";s:3:"alt";s:27:"Lorempixel Sports Image one";s:8:"link_url";s:39:"http://lorempixel.com/400/400/sports/1/";}i:1;a:5:{s:3:"url";s:36:"http://lorempixel.com/400/400/city/2";s:5:"title";s:27:"Lorempixel Sports Image two";s:7:"caption";s:0:"";s:3:"alt";s:0:"";s:8:"link_url";s:37:"http://lorempixel.com/400/400/city/1/";}i:2;a:5:{s:3:"url";s:38:"http://lorempixel.com/400/400/sports/3";s:5:"title";s:29:"Lorempixel Sports Image three";s:7:"caption";s:29:"Lorempixel Sports Image three";s:3:"alt";s:29:"Lorempixel Sports Image three";s:8:"link_url";s:0:"";}i:3;a:5:{s:3:"url";s:39:"http://lorempixel.com/400/400/sports/1/";s:5:"title";s:0:"";s:7:"caption";s:0:"";s:3:"alt";s:0:"";s:8:"link_url";s:0:"";}i:4;a:5:{s:3:"url";s:38:"http://lorempixel.com/400/400/sports/2";s:5:"title";s:0:"";s:7:"caption";s:0:"";s:3:"alt";s:0:"";s:8:"link_url";s:0:"";}i:5;a:5:{s:3:"url";s:38:"http://lorempixel.com/400/400/sports/3";s:5:"title";s:0:"";s:7:"caption";s:0:"";s:3:"alt";s:0:"";s:8:"link_url";s:0:"";}i:6;a:5:{s:3:"url";s:39:"http://lorempixel.com/400/400/sports/1/";s:5:"title";s:0:"";s:7:"caption";s:0:"";s:3:"alt";s:0:"";s:8:"link_url";s:0:"";}i:7;a:5:{s:3:"url";s:38:"http://lorempixel.com/400/400/sports/2";s:5:"title";s:0:"";s:7:"caption";s:0:"";s:3:"alt";s:0:"";s:8:"link_url";s:0:"";}i:8;a:5:{s:3:"url";s:38:"http://lorempixel.com/400/400/sports/3";s:5:"title";s:0:"";s:7:"caption";s:0:"";s:3:"alt";s:0:"";s:8:"link_url";s:0:"";}}]]></wp:meta_value>
202
- </wp:postmeta>
203
- </item>
204
- <item>
205
- <title>Post Carousel Example</title>
206
- <link>http://wordpress.dev/?carousels=post-carousel-example</link>
207
- <pubDate>Thu, 12 Jan 2017 15:00:08 +0000</pubDate>
208
- <dc:creator><![CDATA[sayful]]></dc:creator>
209
- <guid isPermaLink="false">http://wordpress.dev/?post_type=carousels&#038;p=1720</guid>
210
- <description></description>
211
- <content:encoded><![CDATA[]]></content:encoded>
212
- <excerpt:encoded><![CDATA[]]></excerpt:encoded>
213
- <wp:post_id>1720</wp:post_id>
214
- <wp:post_date><![CDATA[2017-01-12 15:00:08]]></wp:post_date>
215
- <wp:post_date_gmt><![CDATA[2017-01-12 15:00:08]]></wp:post_date_gmt>
216
- <wp:comment_status><![CDATA[closed]]></wp:comment_status>
217
- <wp:ping_status><![CDATA[closed]]></wp:ping_status>
218
- <wp:post_name><![CDATA[post-carousel-example]]></wp:post_name>
219
- <wp:status><![CDATA[publish]]></wp:status>
220
- <wp:post_parent>0</wp:post_parent>
221
- <wp:menu_order>0</wp:menu_order>
222
- <wp:post_type><![CDATA[carousels]]></wp:post_type>
223
- <wp:post_password><![CDATA[]]></wp:post_password>
224
- <wp:is_sticky>0</wp:is_sticky>
225
- <wp:postmeta>
226
- <wp:meta_key><![CDATA[_edit_last]]></wp:meta_key>
227
- <wp:meta_value><![CDATA[1]]></wp:meta_value>
228
- </wp:postmeta>
229
- <wp:postmeta>
230
- <wp:meta_key><![CDATA[_slide_type]]></wp:meta_key>
231
- <wp:meta_value><![CDATA[post-carousel]]></wp:meta_value>
232
- </wp:postmeta>
233
- <wp:postmeta>
234
- <wp:meta_key><![CDATA[_wpdh_image_ids]]></wp:meta_key>
235
- <wp:meta_value><![CDATA[]]></wp:meta_value>
236
- </wp:postmeta>
237
- <wp:postmeta>
238
- <wp:meta_key><![CDATA[_post_query_type]]></wp:meta_key>
239
- <wp:meta_value><![CDATA[latest_posts]]></wp:meta_value>
240
- </wp:postmeta>
241
- <wp:postmeta>
242
- <wp:meta_key><![CDATA[_post_date_after]]></wp:meta_key>
243
- <wp:meta_value><![CDATA[]]></wp:meta_value>
244
- </wp:postmeta>
245
- <wp:postmeta>
246
- <wp:meta_key><![CDATA[_post_date_before]]></wp:meta_key>
247
- <wp:meta_value><![CDATA[]]></wp:meta_value>
248
- </wp:postmeta>
249
- <wp:postmeta>
250
- <wp:meta_key><![CDATA[_posts_per_page]]></wp:meta_key>
251
- <wp:meta_value><![CDATA[20]]></wp:meta_value>
252
- </wp:postmeta>
253
- <wp:postmeta>
254
- <wp:meta_key><![CDATA[_post_order]]></wp:meta_key>
255
- <wp:meta_value><![CDATA[DESC]]></wp:meta_value>
256
- </wp:postmeta>
257
- <wp:postmeta>
258
- <wp:meta_key><![CDATA[_post_orderby]]></wp:meta_key>
259
- <wp:meta_value><![CDATA[ID]]></wp:meta_value>
260
- </wp:postmeta>
261
- <wp:postmeta>
262
- <wp:meta_key><![CDATA[_post_height]]></wp:meta_key>
263
- <wp:meta_value><![CDATA[500]]></wp:meta_value>
264
- </wp:postmeta>
265
- <wp:postmeta>
266
- <wp:meta_key><![CDATA[_video_url]]></wp:meta_key>
267
- <wp:meta_value><![CDATA[]]></wp:meta_value>
268
- </wp:postmeta>
269
- <wp:postmeta>
270
- <wp:meta_key><![CDATA[_video_width]]></wp:meta_key>
271
- <wp:meta_value><![CDATA[560]]></wp:meta_value>
272
- </wp:postmeta>
273
- <wp:postmeta>
274
- <wp:meta_key><![CDATA[_video_height]]></wp:meta_key>
275
- <wp:meta_value><![CDATA[315]]></wp:meta_value>
276
- </wp:postmeta>
277
- <wp:postmeta>
278
- <wp:meta_key><![CDATA[_slide_by]]></wp:meta_key>
279
- <wp:meta_value><![CDATA[1]]></wp:meta_value>
280
- </wp:postmeta>
281
- <wp:postmeta>
282
- <wp:meta_key><![CDATA[_margin_right]]></wp:meta_key>
283
- <wp:meta_value><![CDATA[10]]></wp:meta_value>
284
- </wp:postmeta>
285
- <wp:postmeta>
286
- <wp:meta_key><![CDATA[_inifnity_loop]]></wp:meta_key>
287
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
288
- </wp:postmeta>
289
- <wp:postmeta>
290
- <wp:meta_key><![CDATA[_lazy_load_image]]></wp:meta_key>
291
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
292
- </wp:postmeta>
293
- <wp:postmeta>
294
- <wp:meta_key><![CDATA[_show_attachment_title]]></wp:meta_key>
295
- <wp:meta_value><![CDATA[off]]></wp:meta_value>
296
- </wp:postmeta>
297
- <wp:postmeta>
298
- <wp:meta_key><![CDATA[_show_attachment_caption]]></wp:meta_key>
299
- <wp:meta_value><![CDATA[off]]></wp:meta_value>
300
- </wp:postmeta>
301
- <wp:postmeta>
302
- <wp:meta_key><![CDATA[_image_size]]></wp:meta_key>
303
- <wp:meta_value><![CDATA[medium]]></wp:meta_value>
304
- </wp:postmeta>
305
- <wp:postmeta>
306
- <wp:meta_key><![CDATA[_image_target]]></wp:meta_key>
307
- <wp:meta_value><![CDATA[_self]]></wp:meta_value>
308
- </wp:postmeta>
309
- <wp:postmeta>
310
- <wp:meta_key><![CDATA[_nav_button]]></wp:meta_key>
311
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
312
- </wp:postmeta>
313
- <wp:postmeta>
314
- <wp:meta_key><![CDATA[_dot_nav]]></wp:meta_key>
315
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
316
- </wp:postmeta>
317
- <wp:postmeta>
318
- <wp:meta_key><![CDATA[_nav_color]]></wp:meta_key>
319
- <wp:meta_value><![CDATA[#b7b7b7]]></wp:meta_value>
320
- </wp:postmeta>
321
- <wp:postmeta>
322
- <wp:meta_key><![CDATA[_nav_active_color]]></wp:meta_key>
323
- <wp:meta_value><![CDATA[#4caf50]]></wp:meta_value>
324
- </wp:postmeta>
325
- <wp:postmeta>
326
- <wp:meta_key><![CDATA[_autoplay]]></wp:meta_key>
327
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
328
- </wp:postmeta>
329
- <wp:postmeta>
330
- <wp:meta_key><![CDATA[_autoplay_timeout]]></wp:meta_key>
331
- <wp:meta_value><![CDATA[5000]]></wp:meta_value>
332
- </wp:postmeta>
333
- <wp:postmeta>
334
- <wp:meta_key><![CDATA[_autoplay_speed]]></wp:meta_key>
335
- <wp:meta_value><![CDATA[500]]></wp:meta_value>
336
- </wp:postmeta>
337
- <wp:postmeta>
338
- <wp:meta_key><![CDATA[_autoplay_pause]]></wp:meta_key>
339
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
340
- </wp:postmeta>
341
- <wp:postmeta>
342
- <wp:meta_key><![CDATA[_items]]></wp:meta_key>
343
- <wp:meta_value><![CDATA[4]]></wp:meta_value>
344
- </wp:postmeta>
345
- <wp:postmeta>
346
- <wp:meta_key><![CDATA[_items_desktop]]></wp:meta_key>
347
- <wp:meta_value><![CDATA[4]]></wp:meta_value>
348
- </wp:postmeta>
349
- <wp:postmeta>
350
- <wp:meta_key><![CDATA[_items_small_desktop]]></wp:meta_key>
351
- <wp:meta_value><![CDATA[4]]></wp:meta_value>
352
- </wp:postmeta>
353
- <wp:postmeta>
354
- <wp:meta_key><![CDATA[_items_portrait_tablet]]></wp:meta_key>
355
- <wp:meta_value><![CDATA[3]]></wp:meta_value>
356
- </wp:postmeta>
357
- <wp:postmeta>
358
- <wp:meta_key><![CDATA[_items_small_portrait_tablet]]></wp:meta_key>
359
- <wp:meta_value><![CDATA[2]]></wp:meta_value>
360
- </wp:postmeta>
361
- <wp:postmeta>
362
- <wp:meta_key><![CDATA[_items_portrait_mobile]]></wp:meta_key>
363
- <wp:meta_value><![CDATA[1]]></wp:meta_value>
364
- </wp:postmeta>
365
- <wp:postmeta>
366
- <wp:meta_key><![CDATA[_post_categories]]></wp:meta_key>
367
- <wp:meta_value><![CDATA[]]></wp:meta_value>
368
- </wp:postmeta>
369
- <wp:postmeta>
370
- <wp:meta_key><![CDATA[_post_tags]]></wp:meta_key>
371
- <wp:meta_value><![CDATA[]]></wp:meta_value>
372
- </wp:postmeta>
373
- <wp:postmeta>
374
- <wp:meta_key><![CDATA[_post_in]]></wp:meta_key>
375
- <wp:meta_value><![CDATA[]]></wp:meta_value>
376
- </wp:postmeta>
377
- <wp:postmeta>
378
- <wp:meta_key><![CDATA[_images_urls]]></wp:meta_key>
379
- <wp:meta_value><![CDATA[a:1:{i:0;a:5:{s:3:"url";s:0:"";s:5:"title";s:0:"";s:7:"caption";s:0:"";s:3:"alt";s:0:"";s:8:"link_url";s:0:"";}}]]></wp:meta_value>
380
- </wp:postmeta>
381
- </item>
382
- <item>
383
- <title>Video Carousel Example</title>
384
- <link>http://wordpress.dev/?carousels=video-carousel-example</link>
385
- <pubDate>Thu, 12 Jan 2017 15:01:44 +0000</pubDate>
386
- <dc:creator><![CDATA[sayful]]></dc:creator>
387
- <guid isPermaLink="false">http://wordpress.dev/?post_type=carousels&#038;p=1721</guid>
388
- <description></description>
389
- <content:encoded><![CDATA[]]></content:encoded>
390
- <excerpt:encoded><![CDATA[]]></excerpt:encoded>
391
- <wp:post_id>1721</wp:post_id>
392
- <wp:post_date><![CDATA[2017-01-12 15:01:44]]></wp:post_date>
393
- <wp:post_date_gmt><![CDATA[2017-01-12 15:01:44]]></wp:post_date_gmt>
394
- <wp:comment_status><![CDATA[closed]]></wp:comment_status>
395
- <wp:ping_status><![CDATA[closed]]></wp:ping_status>
396
- <wp:post_name><![CDATA[video-carousel-example]]></wp:post_name>
397
- <wp:status><![CDATA[publish]]></wp:status>
398
- <wp:post_parent>0</wp:post_parent>
399
- <wp:menu_order>0</wp:menu_order>
400
- <wp:post_type><![CDATA[carousels]]></wp:post_type>
401
- <wp:post_password><![CDATA[]]></wp:post_password>
402
- <wp:is_sticky>0</wp:is_sticky>
403
- <wp:postmeta>
404
- <wp:meta_key><![CDATA[_edit_last]]></wp:meta_key>
405
- <wp:meta_value><![CDATA[1]]></wp:meta_value>
406
- </wp:postmeta>
407
- <wp:postmeta>
408
- <wp:meta_key><![CDATA[_slide_type]]></wp:meta_key>
409
- <wp:meta_value><![CDATA[video-carousel]]></wp:meta_value>
410
- </wp:postmeta>
411
- <wp:postmeta>
412
- <wp:meta_key><![CDATA[_wpdh_image_ids]]></wp:meta_key>
413
- <wp:meta_value><![CDATA[]]></wp:meta_value>
414
- </wp:postmeta>
415
- <wp:postmeta>
416
- <wp:meta_key><![CDATA[_post_query_type]]></wp:meta_key>
417
- <wp:meta_value><![CDATA[latest_posts]]></wp:meta_value>
418
- </wp:postmeta>
419
- <wp:postmeta>
420
- <wp:meta_key><![CDATA[_post_date_after]]></wp:meta_key>
421
- <wp:meta_value><![CDATA[]]></wp:meta_value>
422
- </wp:postmeta>
423
- <wp:postmeta>
424
- <wp:meta_key><![CDATA[_post_date_before]]></wp:meta_key>
425
- <wp:meta_value><![CDATA[]]></wp:meta_value>
426
- </wp:postmeta>
427
- <wp:postmeta>
428
- <wp:meta_key><![CDATA[_posts_per_page]]></wp:meta_key>
429
- <wp:meta_value><![CDATA[12]]></wp:meta_value>
430
- </wp:postmeta>
431
- <wp:postmeta>
432
- <wp:meta_key><![CDATA[_post_order]]></wp:meta_key>
433
- <wp:meta_value><![CDATA[DESC]]></wp:meta_value>
434
- </wp:postmeta>
435
- <wp:postmeta>
436
- <wp:meta_key><![CDATA[_post_orderby]]></wp:meta_key>
437
- <wp:meta_value><![CDATA[ID]]></wp:meta_value>
438
- </wp:postmeta>
439
- <wp:postmeta>
440
- <wp:meta_key><![CDATA[_post_height]]></wp:meta_key>
441
- <wp:meta_value><![CDATA[450]]></wp:meta_value>
442
- </wp:postmeta>
443
- <wp:postmeta>
444
- <wp:meta_key><![CDATA[_video_url]]></wp:meta_key>
445
- <wp:meta_value><![CDATA[https://www.youtube.com/watch?v=O4-EM32h7b4,https://www.youtube.com/watch?v=72IO4gzB8mU,https://vimeo.com/193773669,https://vimeo.com/193517656,https://www.youtube.com/watch?v=O4-EM32h7b4,https://www.youtube.com/watch?v=72IO4gzB8mU,https://vimeo.com/193773669,https://vimeo.com/193517656]]></wp:meta_value>
446
- </wp:postmeta>
447
- <wp:postmeta>
448
- <wp:meta_key><![CDATA[_video_width]]></wp:meta_key>
449
- <wp:meta_value><![CDATA[560]]></wp:meta_value>
450
- </wp:postmeta>
451
- <wp:postmeta>
452
- <wp:meta_key><![CDATA[_video_height]]></wp:meta_key>
453
- <wp:meta_value><![CDATA[315]]></wp:meta_value>
454
- </wp:postmeta>
455
- <wp:postmeta>
456
- <wp:meta_key><![CDATA[_slide_by]]></wp:meta_key>
457
- <wp:meta_value><![CDATA[1]]></wp:meta_value>
458
- </wp:postmeta>
459
- <wp:postmeta>
460
- <wp:meta_key><![CDATA[_margin_right]]></wp:meta_key>
461
- <wp:meta_value><![CDATA[10]]></wp:meta_value>
462
- </wp:postmeta>
463
- <wp:postmeta>
464
- <wp:meta_key><![CDATA[_inifnity_loop]]></wp:meta_key>
465
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
466
- </wp:postmeta>
467
- <wp:postmeta>
468
- <wp:meta_key><![CDATA[_lazy_load_image]]></wp:meta_key>
469
- <wp:meta_value><![CDATA[off]]></wp:meta_value>
470
- </wp:postmeta>
471
- <wp:postmeta>
472
- <wp:meta_key><![CDATA[_show_attachment_title]]></wp:meta_key>
473
- <wp:meta_value><![CDATA[off]]></wp:meta_value>
474
- </wp:postmeta>
475
- <wp:postmeta>
476
- <wp:meta_key><![CDATA[_show_attachment_caption]]></wp:meta_key>
477
- <wp:meta_value><![CDATA[off]]></wp:meta_value>
478
- </wp:postmeta>
479
- <wp:postmeta>
480
- <wp:meta_key><![CDATA[_image_size]]></wp:meta_key>
481
- <wp:meta_value><![CDATA[thumbnail]]></wp:meta_value>
482
- </wp:postmeta>
483
- <wp:postmeta>
484
- <wp:meta_key><![CDATA[_image_target]]></wp:meta_key>
485
- <wp:meta_value><![CDATA[_self]]></wp:meta_value>
486
- </wp:postmeta>
487
- <wp:postmeta>
488
- <wp:meta_key><![CDATA[_nav_button]]></wp:meta_key>
489
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
490
- </wp:postmeta>
491
- <wp:postmeta>
492
- <wp:meta_key><![CDATA[_dot_nav]]></wp:meta_key>
493
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
494
- </wp:postmeta>
495
- <wp:postmeta>
496
- <wp:meta_key><![CDATA[_nav_color]]></wp:meta_key>
497
- <wp:meta_value><![CDATA[#f1f1f1]]></wp:meta_value>
498
- </wp:postmeta>
499
- <wp:postmeta>
500
- <wp:meta_key><![CDATA[_nav_active_color]]></wp:meta_key>
501
- <wp:meta_value><![CDATA[#4caf50]]></wp:meta_value>
502
- </wp:postmeta>
503
- <wp:postmeta>
504
- <wp:meta_key><![CDATA[_autoplay]]></wp:meta_key>
505
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
506
- </wp:postmeta>
507
- <wp:postmeta>
508
- <wp:meta_key><![CDATA[_autoplay_timeout]]></wp:meta_key>
509
- <wp:meta_value><![CDATA[5000]]></wp:meta_value>
510
- </wp:postmeta>
511
- <wp:postmeta>
512
- <wp:meta_key><![CDATA[_autoplay_speed]]></wp:meta_key>
513
- <wp:meta_value><![CDATA[500]]></wp:meta_value>
514
- </wp:postmeta>
515
- <wp:postmeta>
516
- <wp:meta_key><![CDATA[_autoplay_pause]]></wp:meta_key>
517
- <wp:meta_value><![CDATA[off]]></wp:meta_value>
518
- </wp:postmeta>
519
- <wp:postmeta>
520
- <wp:meta_key><![CDATA[_items]]></wp:meta_key>
521
- <wp:meta_value><![CDATA[4]]></wp:meta_value>
522
- </wp:postmeta>
523
- <wp:postmeta>
524
- <wp:meta_key><![CDATA[_items_desktop]]></wp:meta_key>
525
- <wp:meta_value><![CDATA[4]]></wp:meta_value>
526
- </wp:postmeta>
527
- <wp:postmeta>
528
- <wp:meta_key><![CDATA[_items_small_desktop]]></wp:meta_key>
529
- <wp:meta_value><![CDATA[4]]></wp:meta_value>
530
- </wp:postmeta>
531
- <wp:postmeta>
532
- <wp:meta_key><![CDATA[_items_portrait_tablet]]></wp:meta_key>
533
- <wp:meta_value><![CDATA[3]]></wp:meta_value>
534
- </wp:postmeta>
535
- <wp:postmeta>
536
- <wp:meta_key><![CDATA[_items_small_portrait_tablet]]></wp:meta_key>
537
- <wp:meta_value><![CDATA[2]]></wp:meta_value>
538
- </wp:postmeta>
539
- <wp:postmeta>
540
- <wp:meta_key><![CDATA[_items_portrait_mobile]]></wp:meta_key>
541
- <wp:meta_value><![CDATA[1]]></wp:meta_value>
542
- </wp:postmeta>
543
- <wp:postmeta>
544
- <wp:meta_key><![CDATA[_post_categories]]></wp:meta_key>
545
- <wp:meta_value><![CDATA[]]></wp:meta_value>
546
- </wp:postmeta>
547
- <wp:postmeta>
548
- <wp:meta_key><![CDATA[_post_tags]]></wp:meta_key>
549
- <wp:meta_value><![CDATA[]]></wp:meta_value>
550
- </wp:postmeta>
551
- <wp:postmeta>
552
- <wp:meta_key><![CDATA[_post_in]]></wp:meta_key>
553
- <wp:meta_value><![CDATA[]]></wp:meta_value>
554
- </wp:postmeta>
555
- <wp:postmeta>
556
- <wp:meta_key><![CDATA[_images_urls]]></wp:meta_key>
557
- <wp:meta_value><![CDATA[a:1:{i:0;a:5:{s:3:"url";s:0:"";s:5:"title";s:0:"";s:7:"caption";s:0:"";s:3:"alt";s:0:"";s:8:"link_url";s:0:"";}}]]></wp:meta_value>
558
- </wp:postmeta>
559
- </item>
560
- <item>
561
- <title>Image carousel from media gallery</title>
562
- <link>http://wordpress.dev/?carousels=image-carousel-from-media-gallery</link>
563
- <pubDate>Thu, 12 Jan 2017 15:03:10 +0000</pubDate>
564
- <dc:creator><![CDATA[sayful]]></dc:creator>
565
- <guid isPermaLink="false">http://wordpress.dev/?post_type=carousels&#038;p=1722</guid>
566
- <description></description>
567
- <content:encoded><![CDATA[]]></content:encoded>
568
- <excerpt:encoded><![CDATA[]]></excerpt:encoded>
569
- <wp:post_id>1722</wp:post_id>
570
- <wp:post_date><![CDATA[2017-01-12 15:03:10]]></wp:post_date>
571
- <wp:post_date_gmt><![CDATA[2017-01-12 15:03:10]]></wp:post_date_gmt>
572
- <wp:comment_status><![CDATA[closed]]></wp:comment_status>
573
- <wp:ping_status><![CDATA[closed]]></wp:ping_status>
574
- <wp:post_name><![CDATA[image-carousel-from-media-gallery]]></wp:post_name>
575
- <wp:status><![CDATA[publish]]></wp:status>
576
- <wp:post_parent>0</wp:post_parent>
577
- <wp:menu_order>0</wp:menu_order>
578
- <wp:post_type><![CDATA[carousels]]></wp:post_type>
579
- <wp:post_password><![CDATA[]]></wp:post_password>
580
- <wp:is_sticky>0</wp:is_sticky>
581
- <wp:postmeta>
582
- <wp:meta_key><![CDATA[_edit_last]]></wp:meta_key>
583
- <wp:meta_value><![CDATA[1]]></wp:meta_value>
584
- </wp:postmeta>
585
- <wp:postmeta>
586
- <wp:meta_key><![CDATA[_wpdh_image_ids]]></wp:meta_key>
587
- <wp:meta_value><![CDATA[1710,1692,1691,1687,1686,1628,1027,1022,1045,]]></wp:meta_value>
588
- </wp:postmeta>
589
- <wp:postmeta>
590
- <wp:meta_key><![CDATA[_slide_type]]></wp:meta_key>
591
- <wp:meta_value><![CDATA[image-carousel]]></wp:meta_value>
592
- </wp:postmeta>
593
- <wp:postmeta>
594
- <wp:meta_key><![CDATA[_post_query_type]]></wp:meta_key>
595
- <wp:meta_value><![CDATA[latest_posts]]></wp:meta_value>
596
- </wp:postmeta>
597
- <wp:postmeta>
598
- <wp:meta_key><![CDATA[_post_date_after]]></wp:meta_key>
599
- <wp:meta_value><![CDATA[]]></wp:meta_value>
600
- </wp:postmeta>
601
- <wp:postmeta>
602
- <wp:meta_key><![CDATA[_post_date_before]]></wp:meta_key>
603
- <wp:meta_value><![CDATA[]]></wp:meta_value>
604
- </wp:postmeta>
605
- <wp:postmeta>
606
- <wp:meta_key><![CDATA[_posts_per_page]]></wp:meta_key>
607
- <wp:meta_value><![CDATA[12]]></wp:meta_value>
608
- </wp:postmeta>
609
- <wp:postmeta>
610
- <wp:meta_key><![CDATA[_post_order]]></wp:meta_key>
611
- <wp:meta_value><![CDATA[DESC]]></wp:meta_value>
612
- </wp:postmeta>
613
- <wp:postmeta>
614
- <wp:meta_key><![CDATA[_post_orderby]]></wp:meta_key>
615
- <wp:meta_value><![CDATA[ID]]></wp:meta_value>
616
- </wp:postmeta>
617
- <wp:postmeta>
618
- <wp:meta_key><![CDATA[_post_height]]></wp:meta_key>
619
- <wp:meta_value><![CDATA[450]]></wp:meta_value>
620
- </wp:postmeta>
621
- <wp:postmeta>
622
- <wp:meta_key><![CDATA[_video_url]]></wp:meta_key>
623
- <wp:meta_value><![CDATA[]]></wp:meta_value>
624
- </wp:postmeta>
625
- <wp:postmeta>
626
- <wp:meta_key><![CDATA[_video_width]]></wp:meta_key>
627
- <wp:meta_value><![CDATA[560]]></wp:meta_value>
628
- </wp:postmeta>
629
- <wp:postmeta>
630
- <wp:meta_key><![CDATA[_video_height]]></wp:meta_key>
631
- <wp:meta_value><![CDATA[315]]></wp:meta_value>
632
- </wp:postmeta>
633
- <wp:postmeta>
634
- <wp:meta_key><![CDATA[_slide_by]]></wp:meta_key>
635
- <wp:meta_value><![CDATA[1]]></wp:meta_value>
636
- </wp:postmeta>
637
- <wp:postmeta>
638
- <wp:meta_key><![CDATA[_margin_right]]></wp:meta_key>
639
- <wp:meta_value><![CDATA[10]]></wp:meta_value>
640
- </wp:postmeta>
641
- <wp:postmeta>
642
- <wp:meta_key><![CDATA[_inifnity_loop]]></wp:meta_key>
643
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
644
- </wp:postmeta>
645
- <wp:postmeta>
646
- <wp:meta_key><![CDATA[_lazy_load_image]]></wp:meta_key>
647
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
648
- </wp:postmeta>
649
- <wp:postmeta>
650
- <wp:meta_key><![CDATA[_show_attachment_title]]></wp:meta_key>
651
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
652
- </wp:postmeta>
653
- <wp:postmeta>
654
- <wp:meta_key><![CDATA[_show_attachment_caption]]></wp:meta_key>
655
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
656
- </wp:postmeta>
657
- <wp:postmeta>
658
- <wp:meta_key><![CDATA[_image_size]]></wp:meta_key>
659
- <wp:meta_value><![CDATA[medium]]></wp:meta_value>
660
- </wp:postmeta>
661
- <wp:postmeta>
662
- <wp:meta_key><![CDATA[_image_target]]></wp:meta_key>
663
- <wp:meta_value><![CDATA[_self]]></wp:meta_value>
664
- </wp:postmeta>
665
- <wp:postmeta>
666
- <wp:meta_key><![CDATA[_nav_button]]></wp:meta_key>
667
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
668
- </wp:postmeta>
669
- <wp:postmeta>
670
- <wp:meta_key><![CDATA[_dot_nav]]></wp:meta_key>
671
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
672
- </wp:postmeta>
673
- <wp:postmeta>
674
- <wp:meta_key><![CDATA[_nav_color]]></wp:meta_key>
675
- <wp:meta_value><![CDATA[#f1f1f1]]></wp:meta_value>
676
- </wp:postmeta>
677
- <wp:postmeta>
678
- <wp:meta_key><![CDATA[_nav_active_color]]></wp:meta_key>
679
- <wp:meta_value><![CDATA[#4caf50]]></wp:meta_value>
680
- </wp:postmeta>
681
- <wp:postmeta>
682
- <wp:meta_key><![CDATA[_autoplay]]></wp:meta_key>
683
- <wp:meta_value><![CDATA[on]]></wp:meta_value>
684
- </wp:postmeta>
685
- <wp:postmeta>
686
- <wp:meta_key><![CDATA[_autoplay_timeout]]></wp:meta_key>
687
- <wp:meta_value><![CDATA[5000]]></wp:meta_value>
688
- </wp:postmeta>
689
- <wp:postmeta>
690
- <wp:meta_key><![CDATA[_autoplay_speed]]></wp:meta_key>
691
- <wp:meta_value><![CDATA[500]]></wp:meta_value>
692
- </wp:postmeta>
693
- <wp:postmeta>
694
- <wp:meta_key><![CDATA[_autoplay_pause]]></wp:meta_key>
695
- <wp:meta_value><![CDATA[off]]></wp:meta_value>
696
- </wp:postmeta>
697
- <wp:postmeta>
698
- <wp:meta_key><![CDATA[_items]]></wp:meta_key>
699
- <wp:meta_value><![CDATA[4]]></wp:meta_value>
700
- </wp:postmeta>
701
- <wp:postmeta>
702
- <wp:meta_key><![CDATA[_items_desktop]]></wp:meta_key>
703
- <wp:meta_value><![CDATA[4]]></wp:meta_value>
704
- </wp:postmeta>
705
- <wp:postmeta>
706
- <wp:meta_key><![CDATA[_items_small_desktop]]></wp:meta_key>
707
- <wp:meta_value><![CDATA[4]]></wp:meta_value>
708
- </wp:postmeta>
709
- <wp:postmeta>
710
- <wp:meta_key><![CDATA[_items_portrait_tablet]]></wp:meta_key>
711
- <wp:meta_value><![CDATA[3]]></wp:meta_value>
712
- </wp:postmeta>
713
- <wp:postmeta>
714
- <wp:meta_key><![CDATA[_items_small_portrait_tablet]]></wp:meta_key>
715
- <wp:meta_value><![CDATA[2]]></wp:meta_value>
716
- </wp:postmeta>
717
- <wp:postmeta>
718
- <wp:meta_key><![CDATA[_items_portrait_mobile]]></wp:meta_key>
719
- <wp:meta_value><![CDATA[1]]></wp:meta_value>
720
- </wp:postmeta>
721
- <wp:postmeta>
722
- <wp:meta_key><![CDATA[_post_categories]]></wp:meta_key>
723
- <wp:meta_value><![CDATA[]]></wp:meta_value>
724
- </wp:postmeta>
725
- <wp:postmeta>
726
- <wp:meta_key><![CDATA[_post_tags]]></wp:meta_key>
727
- <wp:meta_value><![CDATA[]]></wp:meta_value>
728
- </wp:postmeta>
729
- <wp:postmeta>
730
- <wp:meta_key><![CDATA[_post_in]]></wp:meta_key>
731
- <wp:meta_value><![CDATA[]]></wp:meta_value>
732
- </wp:postmeta>
733
- <wp:postmeta>
734
- <wp:meta_key><![CDATA[_images_urls]]></wp:meta_key>
735
- <wp:meta_value><![CDATA[a:1:{i:0;a:5:{s:3:"url";s:0:"";s:5:"title";s:0:"";s:7:"caption";s:0:"";s:3:"alt";s:0:"";s:8:"link_url";s:0:"";}}]]></wp:meta_value>
736
- </wp:postmeta>
737
- </item>
738
- </channel>
739
- </rss>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-carousel-slider-activator.php CHANGED
@@ -31,7 +31,7 @@ if ( ! class_exists( 'Carousel_Slider_Activator' ) ) {
31
  if ( is_null( self::$instance ) ) {
32
  self::$instance = new self();
33
 
34
- add_action( 'carousel_slider_activation', array( self::$instance, 'activate' ) );
35
  }
36
 
37
  return self::$instance;
31
  if ( is_null( self::$instance ) ) {
32
  self::$instance = new self();
33
 
34
+ add_action( 'carousel_slider/activation', array( self::$instance, 'activate' ) );
35
  }
36
 
37
  return self::$instance;
includes/class-carousel-slider-admin.php CHANGED
@@ -52,6 +52,51 @@ if ( ! class_exists( 'Carousel_Slider_Admin' ) ) {
52
  // Add custom link to media gallery
53
  add_filter( "attachment_fields_to_edit", array( $this, "attachment_fields_to_edit" ), null, 2 );
54
  add_filter( "attachment_fields_to_save", array( $this, "attachment_fields_to_save" ), null, 2 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
 
57
  /**
@@ -152,17 +197,17 @@ if ( ! class_exists( 'Carousel_Slider_Admin' ) ) {
152
 
153
  case 'usage':
154
  ?>
155
- <label class="screen-reader-text" for="carousel_slider_usage_<?php echo $post_id; ?>">Copy
156
- shortcode</label>
157
- <input
158
- id="carousel_slider_usage_<?php echo $post_id; ?>"
159
- type="text"
160
- onmousedown="this.clicked = 1;"
161
- onfocus="if (!this.clicked) this.select(); else this.clicked = 2;"
162
- onclick="if (this.clicked === 2) this.select(); this.clicked = 0;"
163
- value="[carousel_slide id='<?php echo $post_id; ?>']"
164
- style="background-color: #f1f1f1;min-width: 250px;padding: 5px 8px;"
165
- >
166
  <?php
167
  break;
168
 
@@ -214,7 +259,7 @@ if ( ! class_exists( 'Carousel_Slider_Admin' ) ) {
214
  /**
215
  * Save custom meta box
216
  *
217
- * @param int $post_id The post ID
218
  */
219
  public function save_meta_box( $post_id ) {
220
  if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
@@ -305,7 +350,7 @@ if ( ! class_exists( 'Carousel_Slider_Admin' ) ) {
305
  /**
306
  * Save images urls
307
  *
308
- * @param integer $post_id
309
  *
310
  * @return void
311
  */
52
  // Add custom link to media gallery
53
  add_filter( "attachment_fields_to_edit", array( $this, "attachment_fields_to_edit" ), null, 2 );
54
  add_filter( "attachment_fields_to_save", array( $this, "attachment_fields_to_save" ), null, 2 );
55
+
56
+ add_action( 'admin_footer', array( $this, 'gallery_url_template' ), 5 );
57
+ }
58
+
59
+ /**
60
+ * Carousel slider gallery url template
61
+ *
62
+ * @return void
63
+ */
64
+ public function gallery_url_template() {
65
+ global $post_type;
66
+ if ( $post_type != 'carousels' ) {
67
+ return;
68
+ }
69
+ ?>
70
+ <template id="carouselSliderGalleryUrlTemplate" style="display: none;">
71
+ <div class="carousel_slider-fields">
72
+ <label class="setting">
73
+ <span class="name"><?php esc_html_e( 'URL', 'carousel-slider' ); ?></span>
74
+ <input type="url" name="_images_urls[url][]" value="" autocomplete="off">
75
+ </label>
76
+ <label class="setting">
77
+ <span class="name"><?php esc_html_e( 'Title', 'carousel-slider' ); ?></span>
78
+ <input type="text" name="_images_urls[title][]" value="" autocomplete="off">
79
+ </label>
80
+ <label class="setting">
81
+ <span class="name"><?php esc_html_e( 'Caption', 'carousel-slider' ); ?></span>
82
+ <textarea name="_images_urls[caption][]"></textarea>
83
+ </label>
84
+ <label class="setting">
85
+ <span class="name"><?php esc_html_e( 'Alt Text', 'carousel-slider' ); ?></span>
86
+ <input type="text" name="_images_urls[alt][]" value="" autocomplete="off">
87
+ </label>
88
+ <label class="setting">
89
+ <span class="name"><?php esc_html_e( 'Link To URL', 'carousel-slider' ); ?></span>
90
+ <input type="text" name="_images_urls[link_url][]" value="" autocomplete="off">
91
+ </label>
92
+ <div class="actions">
93
+ <span><span class="dashicons dashicons-move"></span></span>
94
+ <span class="add_row"><span class="dashicons dashicons-plus-alt"></span></span>
95
+ <span class="delete_row"><span class="dashicons dashicons-trash"></span></span>
96
+ </div>
97
+ </div>
98
+ </template>
99
+ <?php
100
  }
101
 
102
  /**
197
 
198
  case 'usage':
199
  ?>
200
+ <label class="screen-reader-text" for="carousel_slider_usage_<?php echo $post_id; ?>">Copy
201
+ shortcode</label>
202
+ <input
203
+ id="carousel_slider_usage_<?php echo $post_id; ?>"
204
+ type="text"
205
+ onmousedown="this.clicked = 1;"
206
+ onfocus="if (!this.clicked) this.select(); else this.clicked = 2;"
207
+ onclick="if (this.clicked === 2) this.select(); this.clicked = 0;"
208
+ value="[carousel_slide id='<?php echo $post_id; ?>']"
209
+ style="background-color: #f1f1f1;min-width: 250px;padding: 5px 8px;"
210
+ >
211
  <?php
212
  break;
213
 
259
  /**
260
  * Save custom meta box
261
  *
262
+ * @param int $post_id The post ID
263
  */
264
  public function save_meta_box( $post_id ) {
265
  if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
350
  /**
351
  * Save images urls
352
  *
353
+ * @param integer $post_id
354
  *
355
  * @return void
356
  */
includes/class-carousel-slider-credit.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- die; // If this file is called directly, abort.
5
- }
6
-
7
- if ( ! class_exists( 'Carousel_Slider_Credit' ) ):
8
-
9
- class Carousel_Slider_Credit {
10
-
11
- protected static $instance = null;
12
-
13
- /**
14
- * Ensures only one instance of this class is loaded or can be loaded.
15
- *
16
- * @return Carousel_Slider_Credit
17
- */
18
- public static function init() {
19
- if ( is_null( self::$instance ) ) {
20
- self::$instance = new self();
21
- }
22
-
23
- return self::$instance;
24
- }
25
-
26
- public function __construct() {
27
- add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) );
28
- }
29
-
30
- /**
31
- * Add custom footer text on plugins page.
32
- *
33
- * @param string $text
34
- *
35
- * @return string
36
- */
37
- public function admin_footer_text( $text ) {
38
- global $post_type, $hook_suffix;
39
-
40
- $footer_text = sprintf(
41
- __( 'If you like %1$s Carousel Slider %2$s please leave us a %3$s rating. A huge thanks in advance!', 'carousel-slider' ),
42
- '<strong>',
43
- '</strong>',
44
- '<a href="https://wordpress.org/support/view/plugin-reviews/carousel-slider?filter=5#postform" target="_blank" data-rated="Thanks :)">&starf;&starf;&starf;&starf;&starf;</a>'
45
- );
46
-
47
- if ( $post_type == 'carousels' || $hook_suffix == 'carousels_page_carousel-slider-documentation' ) {
48
- return $footer_text;
49
- }
50
-
51
- return $text;
52
- }
53
- }
54
-
55
- endif;
56
-
57
- Carousel_Slider_Credit::init();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-carousel-slider-documentation.php DELETED
@@ -1,48 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- die; // If this file is called directly, abort.
5
- }
6
-
7
- if ( ! class_exists( 'Carousel_Slider_Documentation' ) ):
8
-
9
- class Carousel_Slider_Documentation {
10
-
11
- protected static $instance = null;
12
-
13
- /**
14
- * Ensures only one instance of this class is loaded or can be loaded.
15
- *
16
- * @return Carousel_Slider_Documentation
17
- */
18
- public static function init() {
19
- if ( is_null( self::$instance ) ) {
20
- self::$instance = new self();
21
- }
22
-
23
- return self::$instance;
24
- }
25
-
26
- public function __construct() {
27
- add_action( 'admin_menu', array( $this, 'admin_menu' ) );
28
- }
29
-
30
- public function admin_menu() {
31
- add_submenu_page(
32
- 'edit.php?post_type=carousels',
33
- 'Documentation',
34
- 'Documentation',
35
- 'manage_options',
36
- 'carousel-slider-documentation',
37
- array( $this, 'submenu_page_callback' )
38
- );
39
- }
40
-
41
- public function submenu_page_callback() {
42
- include_once CAROUSEL_SLIDER_TEMPLATES . '/admin/documentation.php';
43
- }
44
- }
45
-
46
- endif;
47
-
48
- Carousel_Slider_Documentation::init();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-carousel-slider-gutenberg-block.php DELETED
@@ -1,90 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- die; // If this file is called directly, abort.
5
- }
6
-
7
- if ( ! class_exists( 'Carousel_Slider_Gutenberg_Block' ) ) {
8
-
9
- class Carousel_Slider_Gutenberg_Block {
10
-
11
- /**
12
- * The instance of the class
13
- *
14
- * @var self
15
- */
16
- protected static $instance;
17
-
18
- /**
19
- * Ensures only one instance of this class is loaded or can be loaded.
20
- *
21
- * @return self
22
- */
23
- public static function init() {
24
- if ( is_null( self::$instance ) ) {
25
- self::$instance = new self();
26
-
27
- add_action( 'init', array( self::$instance, 'gutenberg_block' ) );
28
- }
29
-
30
- return self::$instance;
31
- }
32
-
33
- /**
34
- * Register gutenberg block
35
- */
36
- public function gutenberg_block() {
37
- if ( ! function_exists( 'register_block_type' ) ) {
38
- return;
39
- }
40
- wp_register_script( 'carousel-slider-gutenberg-block',
41
- CAROUSEL_SLIDER_ASSETS . '/js/gutenberg-block.js',
42
- array( 'underscore', 'wp-blocks', 'wp-element', 'wp-components', 'wp-editor', 'wp-i18n' )
43
- );
44
- wp_register_style( 'carousel-slider-gutenberg-style',
45
- CAROUSEL_SLIDER_ASSETS . '/css/gutenberg-block.css',
46
- array( 'wp-edit-blocks' )
47
- );
48
- wp_localize_script( 'carousel-slider-gutenberg-block',
49
- 'carousel_slider_gutenberg_block', $this->block()
50
- );
51
-
52
- register_block_type( 'carousel-slider/slider', array(
53
- 'editor_script' => 'carousel-slider-gutenberg-block',
54
- 'editor_style' => 'carousel-slider-gutenberg-style',
55
- ) );
56
- }
57
-
58
- private function block() {
59
- $_sliders = get_posts( array(
60
- 'posts_per_page' => - 1,
61
- 'orderby' => 'date',
62
- 'order' => 'DESC',
63
- 'post_type' => 'carousels',
64
- 'post_status' => 'publish',
65
- ) );
66
- $sliders = array();
67
- foreach ( $_sliders as $form ) {
68
- if ( ! $form instanceof \WP_Post ) {
69
- continue;
70
- }
71
- $sliders[] = array(
72
- 'value' => absint( $form->ID ),
73
- 'label' => esc_attr( $form->post_title ),
74
- );
75
- }
76
-
77
- return array(
78
- 'sliders' => $sliders,
79
- 'site_url' => site_url(),
80
- 'block_logo' => CAROUSEL_SLIDER_ASSETS . '/static-images/logo.svg',
81
- 'block_title' => __( 'Carousel Slider', 'carousel-slider' ),
82
- 'select_slider' => __( 'Select a Slider', 'carousel-slider' ),
83
- 'selected_slider' => __( 'Current Selected Slider', 'carousel-slider' ),
84
- 'filter_slider' => __( 'Type to filter sliders', 'carousel-slider' ),
85
- );
86
- }
87
- }
88
- }
89
-
90
- Carousel_Slider_Gutenberg_Block::init();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-carousel-slider-i18n.php DELETED
@@ -1,55 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- die; // If this file is called directly, abort.
5
- }
6
- /**
7
- * Define the internationalization functionality.
8
- *
9
- * Loads and defines the internationalization files for this plugin
10
- * so that it is ready for translation.
11
- *
12
- * @class Carousel_Slider_i8n
13
- * @since 1.7.3
14
- * @author Sayful Islam <sayful.islam001@gmail.com>
15
- */
16
- if ( ! class_exists( 'Carousel_Slider_i8n' ) ):
17
-
18
- class Carousel_Slider_i8n {
19
- protected static $instance = null;
20
- protected $plugin_name = 'carousel-slider';
21
-
22
- /**
23
- * Ensures only one instance of this class is loaded or can be loaded.
24
- *
25
- * @return Carousel_Slider_i8n
26
- */
27
- public static function init() {
28
- if ( is_null( self::$instance ) ) {
29
- self::$instance = new self();
30
- }
31
-
32
- return self::$instance;
33
- }
34
-
35
- public function __construct() {
36
- add_action( 'init', array( $this, 'load_textdomain' ) );
37
- }
38
-
39
- /**
40
- * Load plugin textdomain
41
- */
42
- public function load_textdomain() {
43
- $locale_file = sprintf( '%1$s-%2$s.mo', 'carousel-slider', get_locale() );
44
- $global_file = join( DIRECTORY_SEPARATOR, array( WP_LANG_DIR, 'carousel-slider', $locale_file ) );
45
-
46
- // Look in global /wp-content/languages/carousel-slider folder
47
- if ( file_exists( $global_file ) ) {
48
- load_textdomain( $this->plugin_name, $global_file );
49
- }
50
- }
51
- }
52
-
53
- endif;
54
-
55
- Carousel_Slider_i8n::init();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-carousel-slider-preview.php DELETED
@@ -1,45 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- die; // If this file is called directly, abort.
5
- }
6
-
7
- if ( ! class_exists( 'Carousel_Slider_Preview' ) ) {
8
-
9
- class Carousel_Slider_Preview {
10
-
11
- /**
12
- * The instance of the class
13
- *
14
- * @var self
15
- */
16
- protected static $instance;
17
-
18
- /**
19
- * Ensures only one instance of this class is loaded or can be loaded.
20
- *
21
- * @return self
22
- */
23
- public static function init() {
24
- if ( is_null( self::$instance ) ) {
25
- self::$instance = new self();
26
-
27
- add_action( 'template_include', array( self::$instance, 'template_include' ) );
28
- }
29
-
30
- return self::$instance;
31
- }
32
-
33
- public function template_include( $template ) {
34
- if ( isset( $_GET['carousel_slider_preview'], $_GET['carousel_slider_iframe'], $_GET['slider_id'] ) ) {
35
- if ( current_user_can( 'edit_pages' ) ) {
36
- $template = CAROUSEL_SLIDER_TEMPLATES . '/public/preview-slider.php';
37
- }
38
- }
39
-
40
- return $template;
41
- }
42
- }
43
- }
44
-
45
- Carousel_Slider_Preview::init();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-carousel-slider-product.php CHANGED
@@ -40,14 +40,8 @@ if ( ! class_exists( 'Carousel_Slider_Product' ) ) {
40
  if ( is_null( self::$instance ) ) {
41
  self::$instance = new self();
42
 
43
- add_action( 'carousel_slider_after_shop_loop_item', array(
44
- self::$instance,
45
- 'quick_view_button'
46
- ), 10, 3 );
47
- add_action( 'carousel_slider_after_shop_loop_item', array(
48
- self::$instance,
49
- 'wish_list_button'
50
- ), 12, 3 );
51
 
52
  add_action( 'wp_ajax_carousel_slider_quick_view', array( self::$instance, 'quick_view' ) );
53
  add_action( 'wp_ajax_nopriv_carousel_slider_quick_view', array( self::$instance, 'quick_view' ) );
@@ -131,23 +125,23 @@ if ( ! class_exists( 'Carousel_Slider_Product' ) ) {
131
  $product = wc_get_product( intval( $_GET['product_id'] ) );
132
 
133
  ?>
134
- <div id="pmid-<?php echo intval( $_GET['slide_id'] ); ?>" class="product carousel-slider__product-modal">
135
 
136
- <div class="images">
137
  <?php echo get_the_post_thumbnail( $product->get_id(), 'medium_large' ); ?>
138
  <?php if ( $product->is_on_sale() ) : ?>
139
  <?php echo apply_filters( 'woocommerce_sale_flash',
140
  '<span class="onsale">' . __( 'Sale!', 'carousel-slider' ) . '</span>', $product ); ?>
141
  <?php endif; ?>
142
- </div>
143
 
144
- <div class="summary entry-summary">
145
 
146
- <h1 class="product_title entry-title">
147
  <?php echo esc_attr( $product->get_title() ); ?>
148
- </h1>
149
 
150
- <div class="woocommerce-product-rating">
151
  <?php
152
  // Check if WooCommerce Version 3.0.0 or higher
153
  if ( function_exists( 'wc_get_rating_html' ) ) {
@@ -156,24 +150,24 @@ if ( ! class_exists( 'Carousel_Slider_Product' ) ) {
156
  echo $product->get_rating_html();
157
  }
158
  ?>
159
- </div>
160
 
161
- <div class="price">
162
  <?php
163
  if ( $product->get_price_html() ) {
164
  echo $product->get_price_html();
165
  }
166
  ?>
167
- </div>
168
 
169
- <div class="description">
170
  <?php
171
  echo '<div style="clear: both;"></div>';
172
  echo apply_filters( 'woocommerce_short_description', $product->get_description() );
173
  ?>
174
- </div>
175
 
176
- <div>
177
  <?php
178
  // Show button
179
  echo '<div style="clear: both;"></div>';
@@ -181,10 +175,10 @@ if ( ! class_exists( 'Carousel_Slider_Product' ) ) {
181
  woocommerce_template_loop_add_to_cart();
182
  }
183
  ?>
184
- </div>
185
 
186
- </div>
187
- </div>
188
  <?php
189
  wp_die();
190
  }
40
  if ( is_null( self::$instance ) ) {
41
  self::$instance = new self();
42
 
43
+ add_action( 'carousel_slider_after_shop_loop_item', [ self::$instance, 'quick_view_button' ], 10, 3 );
44
+ add_action( 'carousel_slider_after_shop_loop_item', [ self::$instance, 'wish_list_button' ], 12, 3 );
 
 
 
 
 
 
45
 
46
  add_action( 'wp_ajax_carousel_slider_quick_view', array( self::$instance, 'quick_view' ) );
47
  add_action( 'wp_ajax_nopriv_carousel_slider_quick_view', array( self::$instance, 'quick_view' ) );
125
  $product = wc_get_product( intval( $_GET['product_id'] ) );
126
 
127
  ?>
128
+ <div id="pmid-<?php echo intval( $_GET['slide_id'] ); ?>" class="product carousel-slider__product-modal">
129
 
130
+ <div class="images">
131
  <?php echo get_the_post_thumbnail( $product->get_id(), 'medium_large' ); ?>
132
  <?php if ( $product->is_on_sale() ) : ?>
133
  <?php echo apply_filters( 'woocommerce_sale_flash',
134
  '<span class="onsale">' . __( 'Sale!', 'carousel-slider' ) . '</span>', $product ); ?>
135
  <?php endif; ?>
136
+ </div>
137
 
138
+ <div class="summary entry-summary">
139
 
140
+ <h1 class="product_title entry-title">
141
  <?php echo esc_attr( $product->get_title() ); ?>
142
+ </h1>
143
 
144
+ <div class="woocommerce-product-rating">
145
  <?php
146
  // Check if WooCommerce Version 3.0.0 or higher
147
  if ( function_exists( 'wc_get_rating_html' ) ) {
150
  echo $product->get_rating_html();
151
  }
152
  ?>
153
+ </div>
154
 
155
+ <div class="price">
156
  <?php
157
  if ( $product->get_price_html() ) {
158
  echo $product->get_price_html();
159
  }
160
  ?>
161
+ </div>
162
 
163
+ <div class="description">
164
  <?php
165
  echo '<div style="clear: both;"></div>';
166
  echo apply_filters( 'woocommerce_short_description', $product->get_description() );
167
  ?>
168
+ </div>
169
 
170
+ <div>
171
  <?php
172
  // Show button
173
  echo '<div style="clear: both;"></div>';
175
  woocommerce_template_loop_add_to_cart();
176
  }
177
  ?>
178
+ </div>
179
 
180
+ </div>
181
+ </div>
182
  <?php
183
  wp_die();
184
  }
includes/class-carousel-slider-script.php DELETED
@@ -1,226 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- die; // If this file is called directly, abort.
5
- }
6
-
7
- if ( ! class_exists( 'Carousel_Slider_Script' ) ) {
8
-
9
- class Carousel_Slider_Script {
10
-
11
- /**
12
- * The instance of the class
13
- *
14
- * @var self
15
- */
16
- private static $instance = null;
17
-
18
- /**
19
- * Ensures only one instance of this class is loaded or can be loaded.
20
- *
21
- * @return Carousel_Slider_Script
22
- */
23
- public static function init() {
24
- if ( is_null( self::$instance ) ) {
25
- self::$instance = new self();
26
-
27
- add_action( 'wp_loaded', array( self::$instance, 'register_styles' ) );
28
- add_action( 'wp_loaded', array( self::$instance, 'register_scripts' ) );
29
-
30
- add_action( 'wp_enqueue_scripts', array( self::$instance, 'frontend_scripts' ), 15 );
31
-
32
- add_action( 'admin_enqueue_scripts', array( self::$instance, 'admin_scripts' ), 10 );
33
- add_action( 'admin_footer', array( self::$instance, 'gallery_url_template' ), 5 );
34
- }
35
-
36
- return self::$instance;
37
- }
38
-
39
- /**
40
- * Register styles
41
- */
42
- public function register_styles() {
43
- $styles = array(
44
- 'carousel-slider' => array(
45
- 'src' => CAROUSEL_SLIDER_ASSETS . '/css/frontend.css',
46
- 'dependency' => array(),
47
- 'version' => CAROUSEL_SLIDER_VERSION,
48
- 'media' => 'all',
49
- ),
50
- 'carousel-slider-admin' => array(
51
- 'src' => CAROUSEL_SLIDER_ASSETS . '/css/admin.css',
52
- 'dependency' => array( 'wp-color-picker' ),
53
- 'version' => CAROUSEL_SLIDER_VERSION,
54
- 'media' => 'all',
55
- ),
56
- );
57
-
58
- foreach ( $styles as $handle => $style ) {
59
- wp_register_style( $handle, $style['src'], $style['dependency'], $style['version'], $style['media'] );
60
- }
61
- }
62
-
63
- /**
64
- * Register scripts
65
- */
66
- public function register_scripts() {
67
- $suffix = ( defined( "SCRIPT_DEBUG" ) && SCRIPT_DEBUG ) ? '' : '.min';
68
-
69
- $scripts = array(
70
- 'select2' => array(
71
- 'src' => CAROUSEL_SLIDER_ASSETS . '/lib/select2/select2' . $suffix . '.js',
72
- 'dependency' => array( 'jquery' ),
73
- 'version' => '4.0.5',
74
- 'in_footer' => true,
75
- ),
76
- 'jquery-tiptip' => array(
77
- 'src' => CAROUSEL_SLIDER_ASSETS . '/lib/jquery-tiptip/jquery.tipTip' . $suffix . '.js',
78
- 'dependency' => array( 'jquery' ),
79
- 'version' => '1.3',
80
- 'in_footer' => true,
81
- ),
82
- 'wp-color-picker-alpha' => array(
83
- 'src' => CAROUSEL_SLIDER_ASSETS . '/lib/wp-color-picker-alpha/wp-color-picker-alpha' . $suffix . '.js',
84
- 'dependency' => array( 'jquery', 'wp-color-picker' ),
85
- 'version' => '2.1.3',
86
- 'in_footer' => true,
87
- ),
88
- 'carousel-slider-admin' => array(
89
- 'src' => CAROUSEL_SLIDER_ASSETS . '/js/admin.js',
90
- 'dependency' => array(
91
- 'jquery',
92
- 'select2',
93
- 'wp-color-picker-alpha',
94
- 'jquery-ui-accordion',
95
- 'jquery-ui-datepicker',
96
- 'jquery-ui-sortable',
97
- 'jquery-ui-tabs',
98
- 'jquery-tiptip',
99
- ),
100
- 'version' => CAROUSEL_SLIDER_VERSION,
101
- 'in_footer' => true,
102
- ),
103
- 'owl-carousel' => array(
104
- 'src' => CAROUSEL_SLIDER_ASSETS . '/lib/owl-carousel/owl.carousel' . $suffix . '.js',
105
- 'dependency' => array( 'jquery' ),
106
- 'version' => '2.3.4',
107
- 'in_footer' => true,
108
- ),
109
- 'magnific-popup' => array(
110
- 'src' => CAROUSEL_SLIDER_ASSETS . '/lib/magnific-popup/jquery.magnific-popup' . $suffix . '.js',
111
- 'dependency' => array( 'jquery' ),
112
- 'version' => '1.1.0',
113
- 'in_footer' => true,
114
- ),
115
- 'carousel-slider' => array(
116
- 'src' => CAROUSEL_SLIDER_ASSETS . '/js/frontend.js',
117
- 'dependency' => array( 'jquery', 'owl-carousel', 'magnific-popup' ),
118
- 'version' => CAROUSEL_SLIDER_VERSION,
119
- 'in_footer' => true,
120
- ),
121
- );
122
-
123
- foreach ( $scripts as $handle => $script ) {
124
- wp_register_script( $handle, $script['src'], $script['dependency'], $script['version'],
125
- $script['in_footer'] );
126
- }
127
- }
128
-
129
- /**
130
- * Load frontend scripts
131
- */
132
- public function frontend_scripts() {
133
- if ( ! $this->should_load_scripts() ) {
134
- return;
135
- }
136
-
137
- wp_enqueue_style( 'carousel-slider' );
138
- wp_enqueue_script( 'carousel-slider' );
139
- }
140
-
141
- /**
142
- * Load admin scripts
143
- *
144
- * @param $hook
145
- */
146
- public function admin_scripts( $hook ) {
147
- global $post;
148
-
149
- $_is_carousel = is_a( $post, 'WP_Post' ) && ( 'carousels' == $post->post_type );
150
- $_is_doc = ( 'carousels_page_carousel-slider-documentation' == $hook );
151
-
152
- if ( ! $_is_carousel && ! $_is_doc ) {
153
- return;
154
- }
155
-
156
- wp_enqueue_media();
157
- wp_enqueue_style( 'carousel-slider-admin' );
158
- wp_enqueue_script( 'carousel-slider-admin' );
159
- }
160
-
161
- /**
162
- * Carousel slider gallery url template
163
- *
164
- * @return void
165
- */
166
- public function gallery_url_template() {
167
- global $post_type;
168
- if ( $post_type != 'carousels' ) {
169
- return;
170
- }
171
- ?>
172
- <template id="carouselSliderGalleryUrlTemplate" style="display: none;">
173
- <div class="carousel_slider-fields">
174
- <label class="setting">
175
- <span class="name"><?php esc_html_e( 'URL', 'carousel-slider' ); ?></span>
176
- <input type="url" name="_images_urls[url][]" value="" autocomplete="off">
177
- </label>
178
- <label class="setting">
179
- <span class="name"><?php esc_html_e( 'Title', 'carousel-slider' ); ?></span>
180
- <input type="text" name="_images_urls[title][]" value="" autocomplete="off">
181
- </label>
182
- <label class="setting">
183
- <span class="name"><?php esc_html_e( 'Caption', 'carousel-slider' ); ?></span>
184
- <textarea name="_images_urls[caption][]"></textarea>
185
- </label>
186
- <label class="setting">
187
- <span class="name"><?php esc_html_e( 'Alt Text', 'carousel-slider' ); ?></span>
188
- <input type="text" name="_images_urls[alt][]" value="" autocomplete="off">
189
- </label>
190
- <label class="setting">
191
- <span class="name"><?php esc_html_e( 'Link To URL', 'carousel-slider' ); ?></span>
192
- <input type="text" name="_images_urls[link_url][]" value="" autocomplete="off">
193
- </label>
194
- <div class="actions">
195
- <span><span class="dashicons dashicons-move"></span></span>
196
- <span class="add_row"><span class="dashicons dashicons-plus-alt"></span></span>
197
- <span class="delete_row"><span class="dashicons dashicons-trash"></span></span>
198
- </div>
199
- </div>
200
- </template>
201
- <?php
202
- }
203
-
204
- /**
205
- * Check if it should load frontend scripts
206
- *
207
- * @return boolean
208
- */
209
- private function should_load_scripts() {
210
- $settings = get_option( 'carousel_slider_settings' );
211
- $settings = is_array( $settings ) ? $settings : [];
212
- if ( isset( $settings['load_scripts'] ) && 'always' == $settings['load_scripts'] ) {
213
- return true;
214
- }
215
-
216
- global $post;
217
- $load_scripts = is_active_widget( false, false, 'widget_carousel_slider', true ) ||
218
- ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'carousel_slide' ) ) ||
219
- ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'carousel' ) );
220
-
221
- return apply_filters( 'carousel_slider_load_scripts', $load_scripts );
222
- }
223
- }
224
- }
225
-
226
- Carousel_Slider_Script::init();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-carousel-slider-setting-api.php DELETED
@@ -1,683 +0,0 @@
1
- <?php
2
-
3
- // If this file is called directly, abort.
4
- defined( 'ABSPATH' ) || die;
5
-
6
- /**
7
- * Very simple WordPress Settings API wrapper class
8
- *
9
- * WordPress Option Page Wrapper class that implements WordPress Settings API and
10
- * give you easy way to create multi tabs admin menu and
11
- * add setting fields with build in validation.
12
- *
13
- * @version 1.0.0 (Oct 28, 2016)
14
- *
15
- * @author Sayful Islam <sayful.islam001@gmail.com>
16
- * @link www.sayfulislam.com
17
- */
18
- if ( ! class_exists( 'Carousel_Slider_Setting_API' ) ) {
19
-
20
-
21
- class Carousel_Slider_Setting_API {
22
-
23
- /**
24
- * Setting page options
25
- *
26
- * @var array
27
- */
28
- private $options = array();
29
-
30
- /**
31
- * Setting page menu fields
32
- *
33
- * @var array
34
- */
35
- private $menu_fields = array();
36
-
37
- /**
38
- * Fields list
39
- *
40
- * @var array
41
- */
42
- private $fields = array();
43
-
44
- /**
45
- * Setting page tabs settings
46
- *
47
- * @var array
48
- */
49
- private $tabs = array();
50
-
51
- /**
52
- * Setting page form action attribute value
53
- *
54
- * @var string
55
- */
56
- private $action = 'options.php';
57
-
58
-
59
- /**
60
- * Filterable_Portfolio_Setting_API constructor.
61
- */
62
- public function __construct() {
63
- if ( is_admin() ) {
64
- add_action( 'admin_menu', array( $this, 'admin_menu' ) );
65
- add_action( 'admin_init', array( $this, 'admin_init' ) );
66
- }
67
- }
68
-
69
- /**
70
- * Add new admin menu
71
- *
72
- * This method is accessible outside the class for creating menu
73
- *
74
- * @param array $menu_fields
75
- *
76
- * @throws Exception
77
- */
78
- public function add_menu( array $menu_fields ) {
79
- if ( ! isset( $menu_fields['page_title'], $menu_fields['menu_title'], $menu_fields['menu_slug'] ) ) {
80
- throw new Exception( 'Required key is not set properly for creating menu.' );
81
- }
82
-
83
- $this->menu_fields = $menu_fields;
84
- }
85
-
86
- /**
87
- * Add new settings field
88
- *
89
- * This method is accessible outside the class for creating settings field
90
- *
91
- * @param array $field
92
- *
93
- * @throws Exception
94
- */
95
- public function add_field( array $field ) {
96
- if ( ! isset( $field['id'], $field['name'] ) ) {
97
- throw new Exception( 'Required key is not set properly for creating tab.' );
98
- }
99
-
100
- $this->fields[] = $field;
101
- }
102
-
103
- /**
104
- * Add setting page tab
105
- *
106
- * This method is accessible outside the class for creating page tab
107
- *
108
- * @param array $tab
109
- *
110
- * @throws Exception
111
- */
112
- public function add_tab( array $tab ) {
113
- if ( ! isset( $tab['id'], $tab['title'] ) ) {
114
- throw new Exception( 'Required key is not set properly for creating tab.' );
115
- }
116
-
117
- $this->tabs[] = $tab;
118
- }
119
-
120
- /**
121
- * Register setting and its sanitize callback.
122
- */
123
- public function admin_init() {
124
- register_setting(
125
- $this->menu_fields['option_name'],
126
- $this->menu_fields['option_name'],
127
- array( $this, 'sanitize_callback' )
128
- );
129
- }
130
-
131
- /**
132
- * Create admin menu
133
- */
134
- public function admin_menu() {
135
- $page_title = $this->menu_fields['page_title'];
136
- $menu_title = $this->menu_fields['menu_title'];
137
- $menu_slug = $this->menu_fields['menu_slug'];
138
- $capability = isset( $this->menu_fields['capability'] ) ? $this->menu_fields['capability'] : 'manage_options';
139
- $parent_slug = isset( $this->menu_fields['parent_slug'] ) ? $this->menu_fields['parent_slug'] : null;
140
-
141
- if ( $parent_slug ) {
142
- add_submenu_page(
143
- $parent_slug,
144
- $page_title,
145
- $menu_title,
146
- $capability,
147
- $menu_slug,
148
- array( $this, 'page_content' )
149
- );
150
- } else {
151
- add_menu_page(
152
- $page_title,
153
- $menu_title,
154
- $capability,
155
- $menu_slug,
156
- array( $this, 'page_content' )
157
- );
158
- }
159
- }
160
-
161
- /**
162
- * Load page content
163
- */
164
- public function page_content() {
165
- ob_start(); ?>
166
- <div class="wrap about-wrap">
167
- <h1><?php echo $this->menu_fields['page_title']; ?></h1>
168
- <div class="about-text"><?php echo $this->menu_fields['about_text']; ?></div>
169
- <?php $this->option_page_tabs(); ?>
170
- <form autocomplete="off" method="POST" action="<?php echo $this->action; ?>">
171
- <?php
172
- $this->get_options();
173
- settings_fields( $this->menu_fields['option_name'] );
174
- $this->setting_fields( $this->filter_fields_by_tab() );
175
- submit_button();
176
- ?>
177
- </form>
178
- </div>
179
- <?php
180
- echo ob_get_clean();
181
- }
182
-
183
- /**
184
- * Generate Option Page Tabs
185
- * @return void
186
- */
187
- private function option_page_tabs() {
188
- if ( count( $this->tabs ) < 1 ) {
189
- return;
190
- }
191
-
192
- $current_tab = isset ( $_GET['tab'] ) ? $_GET['tab'] : $this->tabs[0]['id'];
193
- $page = $this->menu_fields['menu_slug'];
194
-
195
- echo '<h2 class="nav-tab-wrapper wp-clearfix">';
196
- foreach ( $this->tabs as $tab ) {
197
- $class = ( $tab['id'] === $current_tab ) ? ' nav-tab-active' : '';
198
- $page_url = esc_url( add_query_arg( array(
199
- 'page' => $page,
200
- 'tab' => $tab['id']
201
- ), admin_url( $this->menu_fields['parent_slug'] ) ) );
202
- echo '<a class="nav-tab' . $class . '" href="' . $page_url . '">' . $tab['title'] . '</a>';
203
- }
204
- echo '</h2>';
205
- }
206
-
207
- /**
208
- * Filter settings fields by page tab
209
- *
210
- * @param string $current_tab
211
- *
212
- * @return array
213
- */
214
- public function filter_fields_by_tab( $current_tab = null ) {
215
-
216
- if ( count( $this->tabs ) < 1 ) {
217
- return $this->fields;
218
- }
219
-
220
- if ( ! $current_tab ) {
221
- $current_tab = isset ( $_GET['tab'] ) ? $_GET['tab'] : $this->tabs[0]['id'];
222
- }
223
-
224
- $new_array = array();
225
- if ( is_array( $this->fields ) && count( $this->fields ) > 0 ) {
226
- foreach ( array_keys( $this->fields ) as $key ) {
227
- if ( isset( $this->fields[ $key ]['tab'] ) ) {
228
- $temp[ $key ] = $this->fields[ $key ]['tab'];
229
- if ( $temp[ $key ] == $current_tab ) {
230
- $new_array[ $key ] = $this->fields[ $key ];
231
- }
232
- } else {
233
- if ( $current_tab == $this->tabs[0]['id'] ) {
234
- $new_array[ $key ] = $this->fields[ $key ];
235
- }
236
- }
237
- }
238
- }
239
-
240
- return $new_array;
241
- }
242
-
243
- /**
244
- * Sanitize each setting field as needed
245
- *
246
- * @param array $input Contains all settings fields as array keys
247
- *
248
- * @return array
249
- */
250
- public function sanitize_callback( array $input ) {
251
- $output_array = array();
252
- $fields = $this->fields;
253
- $options = (array) get_option( $this->menu_fields['option_name'] );
254
- $options = array_filter( $options );
255
-
256
- if ( empty( $options ) ) {
257
- $options = (array) $this->get_options();
258
- }
259
-
260
- if ( count( $this->tabs ) > 0 ) {
261
- parse_str( $_POST['_wp_http_referer'], $referrer );
262
- $tab = isset( $referrer['tab'] ) ? $referrer['tab'] : $this->tabs[0]['id'];
263
- $fields = $this->filter_fields_by_tab( $tab );
264
- }
265
-
266
- // Loop through each setting being saved and
267
- // pass it through a sanitize filter
268
- foreach ( $input as $key => $value ) {
269
- foreach ( $fields as $field ) {
270
- if ( $field['id'] == $key ) {
271
- $rule = empty( $field['validate'] ) ? $field['type'] : $field['validate'];
272
- $output_array[ $key ] = $this->validate( $value, $rule );
273
- }
274
- }
275
- }
276
-
277
- return array_merge( $options, $output_array );
278
- }
279
-
280
- /**
281
- * Get options parsed with default value
282
- * @return array
283
- */
284
- public function get_options() {
285
- $options_array = array();
286
-
287
- foreach ( $this->fields as $value ) {
288
- $std_value = ( isset( $value['std'] ) ) ? $value['std'] : '';
289
- $options_array[ $value['id'] ] = $std_value;
290
- }
291
-
292
- $options = wp_parse_args(
293
- get_option( $this->menu_fields['option_name'] ),
294
- $options_array
295
- );
296
-
297
- return $this->options = $options;
298
- }
299
-
300
- /**
301
- * Validate the option's value
302
- *
303
- * @param mixed $input
304
- * @param string $validation_rule
305
- *
306
- * @return mixed
307
- */
308
- private function validate( $input, $validation_rule = 'text' ) {
309
- switch ( $validation_rule ) {
310
- case 'text':
311
- return sanitize_text_field( $input );
312
- break;
313
-
314
- case 'number':
315
- return is_int( $input ) ? trim( $input ) : intval( $input );
316
- break;
317
-
318
- case 'url':
319
- return esc_url_raw( trim( $input ) );
320
- break;
321
-
322
- case 'email':
323
- return sanitize_email( $input );
324
- break;
325
-
326
- case 'checkbox':
327
- return ( $input == 1 ) ? 1 : 0;
328
- break;
329
-
330
- case 'multi_checkbox':
331
- return $input;
332
- break;
333
-
334
- case 'radio':
335
- return sanitize_text_field( $input );
336
- break;
337
-
338
- case 'select':
339
- return sanitize_text_field( $input );
340
- break;
341
-
342
- case 'date':
343
- return date( 'F d, Y', strtotime( $input ) );
344
- break;
345
-
346
- case 'textarea':
347
- return wp_filter_nohtml_kses( $input );
348
- break;
349
-
350
- case 'inlinehtml':
351
- return wp_filter_kses( force_balance_tags( $input ) );
352
- break;
353
-
354
- case 'linebreaks':
355
- return wp_strip_all_tags( $input );
356
- break;
357
-
358
- case 'wp_editor':
359
- return wp_kses_post( $input );
360
- break;
361
-
362
- default:
363
- return sanitize_text_field( $input );
364
- break;
365
- }
366
- }
367
-
368
- /**
369
- * Settings fields
370
- *
371
- * @param array $fields
372
- *
373
- * @return void
374
- */
375
- private function setting_fields( $fields = null ) {
376
- $fields = is_array( $fields ) ? $fields : $this->fields;
377
-
378
- $table = "";
379
- $table .= "<table class='form-table'>";
380
-
381
- foreach ( $fields as $field ) {
382
- $name = sprintf( '%s[%s]', $this->menu_fields['option_name'], $field['id'] );
383
- $type = isset( $field['type'] ) ? $field['type'] : 'text';
384
- $value = isset( $this->options[ $field['id'] ] ) ? $this->options[ $field['id'] ] : '';
385
-
386
- $table .= "<tr>";
387
- $table .= sprintf( '<th scope="row"><label for="%1$s">%2$s</label></th>', $field['id'],
388
- $field['name'] );
389
- $table .= "<td>";
390
-
391
- if ( method_exists( $this, $type ) ) {
392
- $table .= $this->$type( $field, $name, $value );
393
- } else {
394
- $table .= $this->text( $field, $name, $value );
395
- }
396
-
397
- if ( ! empty( $field['desc'] ) ) {
398
- $table .= sprintf( '<p class="description">%s</p>', $field['desc'] );
399
- }
400
- $table .= "</td>";
401
- $table .= "</tr>";
402
- }
403
-
404
- $table .= "</table>";
405
- echo $table;
406
- }
407
-
408
- /**
409
- * text input field
410
- *
411
- * @param array $field
412
- * @param string $name
413
- * @param string $value
414
- *
415
- * @return string
416
- */
417
- public function text( $field, $name, $value ) {
418
- return sprintf( '<input type="text" class="regular-text" value="%1$s" id="%2$s" name="%3$s">', $value,
419
- $field['id'], $name );
420
- }
421
-
422
- /**
423
- * email input field
424
- *
425
- * @param array $field
426
- * @param string $name
427
- * @param string $value
428
- *
429
- * @return string
430
- */
431
- public function email( $field, $name, $value ) {
432
- return sprintf( '<input type="email" class="regular-text" value="%1$s" id="%2$s" name="%3$s">', $value,
433
- $field['id'], $name );
434
- }
435
-
436
- /**
437
- * password input field
438
- *
439
- * @param array $field
440
- * @param string $name
441
- * @param string $value
442
- *
443
- * @return string
444
- */
445
- public function password( $field, $name, $value ) {
446
- return sprintf( '<input type="password" class="regular-text" value="" id="%2$s" name="%3$s">', $value,
447
- $field['id'], $name );
448
- }
449
-
450
- /**
451
- * number input field
452
- *
453
- * @param array $field
454
- * @param string $name
455
- * @param string $value
456
- *
457
- * @return string
458
- */
459
- public function number( $field, $name, $value ) {
460
- return sprintf( '<input type="number" class="regular-text" value="%1$s" id="%2$s" name="%3$s">', $value,
461
- $field['id'], $name );
462
- }
463
-
464
- /**
465
- * url input field
466
- *
467
- * @param array $field
468
- * @param string $name
469
- * @param string $value
470
- *
471
- * @return string
472
- */
473
- public function url( $field, $name, $value ) {
474
- return sprintf( '<input type="url" class="regular-text" value="%1$s" id="%2$s" name="%3$s">', $value,
475
- $field['id'], $name );
476
- }
477
-
478
- /**
479
- * color input field
480
- *
481
- * @param array $field
482
- * @param string $name
483
- * @param string $value
484
- *
485
- * @return string
486
- */
487
- public function color( $field, $name, $value ) {
488
- $default_color = ( isset( $field['std'] ) ) ? $field['std'] : "";
489
-
490
- return sprintf( '<input type="text" class="color-picker" value="%1$s" id="%2$s" name="%3$s" data-alpha="true" data-default-color="%4$s">',
491
- $value, $field['id'], $name, $default_color );
492
- }
493
-
494
- /**
495
- * date input field
496
- *
497
- * @param array $field
498
- * @param string $name
499
- * @param string $value
500
- *
501
- * @return string
502
- */
503
- public function date( $field, $name, $value ) {
504
- $value = date( "F d, Y", strtotime( $value ) );
505
-
506
- return sprintf( '<input type="text" class="regular-text datepicker" value="%1$s" id="%2$s" name="%3$s">',
507
- $value, $field['id'], $name );
508
- }
509
-
510
- /**
511
- * textarea input field
512
- *
513
- * @param array $field
514
- * @param string $name
515
- * @param string $value
516
- *
517
- * @return string
518
- */
519
- public function textarea( $field, $name, $value ) {
520
- $rows = ( isset( $field['rows'] ) ) ? $field['rows'] : 5;
521
- $cols = ( isset( $field['cols'] ) ) ? $field['cols'] : 40;
522
- $placeholder = ( isset( $field['placeholder'] ) ) ? sprintf( 'placeholder="%s"',
523
- esc_attr( $field['placeholder'] ) ) : '';
524
-
525
- return '<textarea id="' . $field['id'] . '" name="' . $name . '" rows="' . $rows . '" cols="' . $cols . '" ' . $placeholder . '>' . $value . '</textarea>';
526
- }
527
-
528
- /**
529
- * checkbox input field
530
- *
531
- * @param array $field
532
- * @param string $name
533
- * @param string $value
534
- *
535
- * @return string
536
- */
537
- public function checkbox( $field, $name, $value ) {
538
- $checked = ( 1 == $value ) ? 'checked' : '';
539
- $table = '<input type="hidden" name="' . $name . '" value="0">';
540
- $table .= '<fieldset><legend class="screen-reader-text"><span>' . $field['name'] . '</span></legend>';
541
- $table .= '<label for="' . $field['id'] . '">';
542
- $table .= '<input type="checkbox" value="1" id="' . $field['id'] . '" name="' . $name . '" ' . $checked . '>';
543
- $table .= $field['name'] . '</label></fieldset>';
544
-
545
- return $table;
546
- }
547
-
548
- /**
549
- * multi checkbox input field
550
- *
551
- * @param array $field
552
- * @param string $name
553
- * @param array $value
554
- *
555
- * @return string
556
- */
557
- public function multi_checkbox( $field, $name, $value ) {
558
- $table = "<fieldset>";
559
- $name = $name . "[]";
560
-
561
- $table .= sprintf( '<input type="hidden" name="%1$s" value="0">', $name );
562
- foreach ( $field['options'] as $key => $label ) {
563
- $checked = ( in_array( $key, $value ) ) ? 'checked="checked"' : '';
564
- $table .= '<label for="' . $key . '"><input type="checkbox" value="' . $key . '" id="' . $key . '" name="' . $name . '" ' . $checked . '>' . $label . '</label><br>';
565
- }
566
- $table .= "</fieldset>";
567
-
568
- return $table;
569
- }
570
-
571
- /**
572
- * radio input field
573
- *
574
- * @param array $field
575
- * @param string $name
576
- * @param string $value
577
- *
578
- * @return string
579
- */
580
- public function radio( $field, $name, $value ) {
581
- $table = '<fieldset><legend class="screen-reader-text"><span>' . $field['name'] . '</span></legend><p>';
582
-
583
- foreach ( $field['options'] as $key => $label ) {
584
-
585
- $checked = ( $value == $key ) ? 'checked="checked"' : '';
586
- $table .= '<label><input type="radio" ' . $checked . ' value="' . $key . '" name="' . $name . '">' . $label . '</label><br>';
587
- }
588
- $table .= "</p></fieldset>";
589
-
590
- return $table;
591
- }
592
-
593
- /**
594
- * select input field
595
- *
596
- * @param array $field
597
- * @param string $name
598
- * @param string $value
599
- *
600
- * @return string
601
- */
602
- public function select( $field, $name, $value ) {
603
- $table = sprintf( '<select id="%1$s" name="%2$s" class="regular-text">', $field['id'], $name );
604
- foreach ( $field['options'] as $key => $label ) {
605
- $selected = ( $value == $key ) ? 'selected="selected"' : '';
606
- $table .= '<option value="' . $key . '" ' . $selected . '>' . $label . '</option>';
607
- }
608
- $table .= "</select>";
609
-
610
- return $table;
611
- }
612
-
613
- /**
614
- * Get available image sizes
615
- *
616
- * @param $field
617
- * @param $name
618
- * @param $value
619
- *
620
- * @return string
621
- */
622
- public function image_sizes( $field, $name, $value ) {
623
-
624
- global $_wp_additional_image_sizes;
625
-
626
- $sizes = array();
627
-
628
- foreach ( get_intermediate_image_sizes() as $_size ) {
629
- if ( in_array( $_size, array( 'thumbnail', 'medium', 'medium_large', 'large' ) ) ) {
630
-
631
- $width = get_option( "{$_size}_size_w" );
632
- $height = get_option( "{$_size}_size_h" );
633
- $crop = (bool) get_option( "{$_size}_crop" ) ? 'hard' : 'soft';
634
-
635
- $sizes[ $_size ] = "{$_size} - {$width}x{$height} ($crop crop)";
636
-
637
- } elseif ( isset( $_wp_additional_image_sizes[ $_size ] ) ) {
638
-
639
- $width = $_wp_additional_image_sizes[ $_size ]['width'];
640
- $height = $_wp_additional_image_sizes[ $_size ]['height'];
641
- $crop = $_wp_additional_image_sizes[ $_size ]['crop'] ? 'hard' : 'soft';
642
-
643
- $sizes[ $_size ] = "{$_size} - {$width}x{$height} ($crop crop)";
644
- }
645
- }
646
-
647
- $sizes = array_merge( $sizes, array( 'full' => 'original uploaded image' ) );
648
-
649
- $table = '<select name="' . $name . '" id="' . $field['id'] . '" class="regular-text select2">';
650
- foreach ( $sizes as $key => $option ) {
651
- $selected = ( $value == $key ) ? ' selected="selected"' : '';
652
- $table .= '<option value="' . $key . '" ' . $selected . '>' . $option . '</option>';
653
- }
654
- $table .= '</select>';
655
-
656
- return $table;
657
- }
658
-
659
- /**
660
- * wp_editor input field
661
- *
662
- * @param array $field
663
- * @param string $name
664
- * @param string $value
665
- *
666
- * @return string
667
- */
668
- public function wp_editor( $field, $name, $value ) {
669
- ob_start();
670
- echo "<div class='sp-wp-editor-container'>";
671
- wp_editor( $value, $field['id'], array(
672
- 'textarea_name' => $name,
673
- 'tinymce' => false,
674
- 'media_buttons' => false,
675
- 'textarea_rows' => isset( $field['rows'] ) ? $field['rows'] : 6,
676
- 'quicktags' => array( "buttons" => "strong,em,link,img,ul,li,ol" ),
677
- ) );
678
- echo "</div>";
679
-
680
- return ob_get_clean();
681
- }
682
- }
683
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-carousel-slider-setting.php DELETED
@@ -1,67 +0,0 @@
1
- <?php
2
-
3
- // If this file is called directly, abort.
4
- defined( 'ABSPATH' ) || die;
5
-
6
- if ( ! class_exists( 'Carousel_Slider_Setting' ) ) {
7
- class Carousel_Slider_Setting {
8
-
9
- /**
10
- * Instance of current class
11
- *
12
- * @var self
13
- */
14
- private static $instance;
15
-
16
- /**
17
- * @return Carousel_Slider_Setting
18
- */
19
- public static function init() {
20
- if ( is_null( self::$instance ) ) {
21
- self::$instance = new self();
22
-
23
- add_action( 'init', array( self::$instance, 'settings' ) );
24
- }
25
-
26
- return self::$instance;
27
- }
28
-
29
- /**
30
- * Plugin setting fields
31
- *
32
- * @throws Exception
33
- */
34
- public function settings() {
35
- $settings = new Carousel_Slider_Setting_API();
36
- $settings->add_menu( array(
37
- 'page_title' => __( 'Carousel Slider Settings', 'carousel-slider' ),
38
- 'menu_title' => __( 'Settings', 'carousel-slider' ),
39
- 'about_text' => __( 'Thank you for choosing Carousel Slider. We hope you enjoy it!', 'carousel-slider' ),
40
- 'menu_slug' => 'settings',
41
- 'parent_slug' => 'edit.php?post_type=carousels',
42
- 'option_name' => 'carousel_slider_settings',
43
- ) );
44
-
45
- // Add settings page tab
46
- $settings->add_tab( array(
47
- 'id' => 'general',
48
- 'title' => __( 'General', 'carousel-slider' ),
49
- ) );
50
-
51
- $settings->add_field( array(
52
- 'id' => 'load_scripts',
53
- 'type' => 'radio',
54
- 'std' => 'optimized',
55
- 'name' => __( 'Style & Scrips', 'carousel-slider' ),
56
- 'desc' => __( 'If you choose Optimized, then scrips and styles will be loaded only on page where you are using shortcode. If Optimized is not working for you then choose Always.', 'carousel-slider' ),
57
- 'options' => array(
58
- 'always' => __( 'Always', 'carousel-slider' ),
59
- 'optimized' => __( 'Optimized (recommended)', 'carousel-slider' ),
60
- ),
61
- 'tab' => 'general',
62
- ) );
63
- }
64
- }
65
- }
66
-
67
- Carousel_Slider_Setting::init();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-carousel-slider-structured-data.php DELETED
@@ -1,317 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- exit; // Exit if accessed directly.
5
- }
6
-
7
- if ( ! class_exists( 'Carousel_Slider_Structured_Data' ) ):
8
-
9
- /**
10
- * Structured data's handler and generator using JSON-LD format.
11
- *
12
- * @class Carousel_Slider_Structured_Data
13
- * @since 1.7.2
14
- * @author Sayful Islam <sayful.islam001@gmail.com>
15
- */
16
- class Carousel_Slider_Structured_Data {
17
-
18
- protected static $instance = null;
19
- private $_product_data = array();
20
- private $_image_data = array();
21
- private $_post_data = array();
22
-
23
- /**
24
- * Ensures only one instance of this class is loaded or can be loaded.
25
- *
26
- * @return Carousel_Slider_Structured_Data
27
- */
28
- public static function init() {
29
- if ( is_null( self::$instance ) ) {
30
- self::$instance = new self();
31
- }
32
-
33
- return self::$instance;
34
- }
35
-
36
- /**
37
- * Constructor.
38
- */
39
- public function __construct() {
40
- add_action( 'carousel_slider_image_gallery_loop', array( $this, 'generate_image_data' ) );
41
- add_action( 'carousel_slider_post_loop', array( $this, 'generate_post_data' ) );
42
- add_action( 'carousel_slider_product_loop', array( $this, 'generate_product_data' ), 10, 2 );
43
- // Output structured data.
44
- add_action( 'wp_footer', array( $this, 'output_structured_data' ), 90 );
45
- }
46
-
47
- /**
48
- * Outputs structured data.
49
- *
50
- * Hooked into `wp_footer` action hook.
51
- */
52
- public function output_structured_data() {
53
- $data = $this->get_structured_product_data();
54
- if ( $data ) {
55
- echo '<script type="application/ld+json">' . wp_json_encode( $data ) . '</script>' . "\n";
56
- }
57
- $gallery_data = $this->get_structured_image_data();
58
- if ( $gallery_data ) {
59
- echo '<script type="application/ld+json">' . wp_json_encode( $gallery_data ) . '</script>' . "\n";
60
- }
61
- $post_data = $this->get_structured_post_data();
62
- if ( $post_data ) {
63
- echo '<script type="application/ld+json">' . wp_json_encode( $post_data ) . '</script>' . "\n";
64
- }
65
- }
66
-
67
- /**
68
- * Structures and returns product data.
69
- * @return array
70
- */
71
- private function get_structured_product_data() {
72
- $data = array(
73
- '@context' => 'http://schema.org/',
74
- "@graph" => $this->get_product_data()
75
- );
76
-
77
- return $this->get_product_data() ? $data : array();
78
- }
79
-
80
- /**
81
- * Gets product data.
82
- *
83
- * @return array
84
- */
85
- private function get_product_data() {
86
- return $this->_product_data;
87
- }
88
-
89
- /**
90
- * Structures and returns image data.
91
- * @return array
92
- */
93
- private function get_structured_image_data() {
94
- $data = array(
95
- '@context' => 'http://schema.org/',
96
- "@type" => "ImageGallery",
97
- "associatedMedia" => $this->get_image_data()
98
- );
99
-
100
- return $this->get_image_data() ? $data : array();
101
- }
102
-
103
- /**
104
- * Get image data
105
- *
106
- * @return array
107
- */
108
- private function get_image_data() {
109
- return $this->_image_data;
110
- }
111
-
112
- private function get_structured_post_data() {
113
- $data = array(
114
- '@context' => 'http://schema.org/',
115
- "@graph" => $this->get_post_data()
116
- );
117
-
118
- return $this->get_post_data() ? $data : array();
119
- }
120
-
121
- private function get_post_data() {
122
- return $this->_post_data;
123
- }
124
-
125
- /**
126
- * Generates Image structured data.
127
- *
128
- * Hooked into `carousel_slider_image_gallery_loop` action hook.
129
- *
130
- * @param WP_Post $_post Post data (default: null).
131
- */
132
- public function generate_image_data( $_post ) {
133
- $image = wp_get_attachment_image_src( $_post->ID, 'full' );
134
- $markup['@type'] = 'ImageObject';
135
- $markup['contentUrl'] = $image[0];
136
- $markup['name'] = $_post->post_title;
137
-
138
- $this->set_data( apply_filters( 'carousel_slider_structured_data_image', $markup, $_post ) );
139
- }
140
-
141
- /**
142
- * Sets data.
143
- *
144
- * @param array $data Structured data.
145
- *
146
- * @return bool
147
- */
148
- private function set_data( $data ) {
149
- if ( ! isset( $data['@type'] ) || ! preg_match( '|^[a-zA-Z]{1,20}$|', $data['@type'] ) ) {
150
- return false;
151
- }
152
-
153
- if ( $data['@type'] == 'ImageObject' ) {
154
- if ( ! $this->maybe_image_added( $data['contentUrl'] ) ) {
155
- $this->_image_data[] = $data;
156
- }
157
- }
158
-
159
- if ( $data['@type'] == 'Product' ) {
160
- if ( ! $this->maybe_product_added( $data['@id'] ) ) {
161
- $this->_product_data[] = $data;
162
- }
163
- }
164
-
165
- if ( $data['@type'] == 'BlogPosting' ) {
166
- if ( ! $this->maybe_post_added( $data['mainEntityOfPage']['@id'] ) ) {
167
- $this->_post_data[] = $data;
168
- }
169
- }
170
-
171
- return true;
172
- }
173
-
174
- /**
175
- * Check if image is already added to list
176
- *
177
- * @param string $image_id
178
- *
179
- * @return boolean
180
- */
181
- private function maybe_image_added( $image_id = null ) {
182
- $image_data = $this->get_image_data();
183
- if ( count( $image_data ) > 0 ) {
184
- $image_data = array_map( function ( $data ) {
185
- return $data['contentUrl'];
186
- }, $image_data );
187
-
188
- return in_array( $image_id, $image_data );
189
- }
190
-
191
- return false;
192
- }
193
-
194
- /**
195
- * Check if product is already added to list
196
- *
197
- * @param string $product_id
198
- *
199
- * @return boolean
200
- */
201
- private function maybe_product_added( $product_id = null ) {
202
- $product_data = $this->get_product_data();
203
- if ( count( $product_data ) > 0 ) {
204
- $product_data = array_map( function ( $data ) {
205
- return $data['@id'];
206
- }, $product_data );
207
-
208
- return in_array( $product_id, $product_data );
209
- }
210
-
211
- return false;
212
- }
213
-
214
- /**
215
- * Check if post is already added to list
216
- *
217
- * @param string $post_id
218
- *
219
- * @return boolean
220
- */
221
- private function maybe_post_added( $post_id ) {
222
- $post_data = $this->get_post_data();
223
- if ( count( $post_data ) > 0 ) {
224
- $post_data = array_map( function ( $data ) {
225
- return $data['mainEntityOfPage']['@id'];
226
- }, $post_data );
227
-
228
- return in_array( $post_id, $post_data );
229
- }
230
-
231
- return false;
232
- }
233
-
234
- /**
235
- * Generates post structured data.
236
- *
237
- * Hooked into `carousel_slider_post_loop` action hook.
238
- *
239
- * @param WP_Post $_post
240
- */
241
- public function generate_post_data( $_post ) {
242
- if ( ! $_post instanceof WP_Post ) {
243
- return;
244
- }
245
-
246
- $image = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'normal' );
247
-
248
- $json['@type'] = 'BlogPosting';
249
-
250
- $json['mainEntityOfPage'] = array(
251
- '@type' => 'webpage',
252
- '@id' => get_the_permalink(),
253
- );
254
-
255
-
256
- $json['publisher'] = array(
257
- '@type' => 'organization',
258
- 'name' => get_bloginfo( 'name' ),
259
- );
260
-
261
- $json['author'] = array(
262
- '@type' => 'person',
263
- 'name' => get_the_author(),
264
- );
265
-
266
- if ( $image ) {
267
- $json['image'] = array(
268
- '@type' => 'ImageObject',
269
- 'url' => $image[0],
270
- 'width' => $image[1],
271
- 'height' => $image[2],
272
- );
273
- }
274
-
275
- $json['datePublished'] = get_post_time( 'c' );
276
- $json['dateModified'] = get_the_modified_date( 'c' );
277
- $json['name'] = get_the_title();
278
- $json['headline'] = $json['name'];
279
- $json['description'] = get_the_excerpt();
280
-
281
-
282
- $this->set_data( apply_filters( 'carousel_slider_structured_data_post', $json, $_post ) );
283
- }
284
-
285
- /**
286
- * Generates Product structured data.
287
- *
288
- * Hooked into `carousel_slider_product_loop` action hook.
289
- *
290
- * @param WC_Product $product Product data (default: null).
291
- * @param WP_Post $post
292
- */
293
- public function generate_product_data( $product, $post ) {
294
- if ( ! $product instanceof WC_Product ) {
295
- return;
296
- }
297
-
298
- if ( defined( 'WC_VERSION' ) && version_compare( WC_VERSION, "3.0.0", ">=" ) ) {
299
- $name = $product->get_name();
300
- $permalink = get_permalink( $product->get_id() );
301
- } else {
302
- $name = get_the_title( $post->ID );
303
- $permalink = get_permalink( $post->ID );
304
- }
305
-
306
- $markup['@type'] = 'Product';
307
- $markup['@id'] = $permalink;
308
- $markup['url'] = $markup['@id'];
309
- $markup['name'] = $name;
310
-
311
- $this->set_data( apply_filters( 'carousel_slider_structured_data_product', $markup, $product ) );
312
- }
313
- }
314
-
315
- endif;
316
-
317
- Carousel_Slider_Structured_Data::init();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-carousel-slider-vc-element.php DELETED
@@ -1,89 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- die; // If this file is called directly, abort.
5
- }
6
-
7
- if ( ! class_exists( 'Carousel_Slider_Visual_Composer_Element' ) ) {
8
-
9
- class Carousel_Slider_Visual_Composer_Element {
10
-
11
- /**
12
- * The instance of the class
13
- *
14
- * @var self
15
- */
16
- private static $instance = null;
17
-
18
- /**
19
- * Ensures only one instance of this class is loaded or can be loaded.
20
- *
21
- * @return self
22
- */
23
- public static function init() {
24
- if ( is_null( self::$instance ) ) {
25
- self::$instance = new self();
26
-
27
- add_action( 'init', array( self::$instance, 'integrate_with_vc' ) );
28
- }
29
-
30
- return self::$instance;
31
- }
32
-
33
- /**
34
- * Integrate with visual composer
35
- */
36
- public function integrate_with_vc() {
37
- // Check if Visual Composer is installed
38
- if ( ! function_exists( 'vc_map' ) ) {
39
- return;
40
- }
41
-
42
- vc_map( array(
43
- "name" => __( "Carousel Slider", 'carousel-slider' ),
44
- "description" => __( "Place Carousel Slider.", 'carousel-slider' ),
45
- "base" => "carousel_slide",
46
- "controls" => "full",
47
- "icon" => CAROUSEL_SLIDER_ASSETS . '/static-images/logo.svg',
48
- "category" => __( 'Content', 'carousel-slider' ),
49
- "params" => array(
50
- array(
51
- "type" => "dropdown",
52
- "holder" => "div",
53
- "class" => "carousel-slider-id",
54
- "param_name" => "id",
55
- "value" => $this->carousels_list(),
56
- "heading" => __( "Choose Carousel Slide", 'carousel-slider' ),
57
- ),
58
- ),
59
- ) );
60
- }
61
-
62
- /**
63
- * Generate array for carousel slider
64
- *
65
- * @return array
66
- */
67
- private function carousels_list() {
68
- $carousels = get_posts( array(
69
- 'post_type' => 'carousels',
70
- 'post_status' => 'publish',
71
- 'posts_per_page' => - 1,
72
- ) );
73
-
74
- if ( count( $carousels ) < 1 ) {
75
- return array();
76
- }
77
-
78
- $result = array();
79
-
80
- foreach ( $carousels as $carousel ) {
81
- $result[ esc_html( $carousel->post_title ) ] = $carousel->ID;
82
- }
83
-
84
- return $result;
85
- }
86
- }
87
- }
88
-
89
- Carousel_Slider_Visual_Composer_Element::init();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/carousel-slider.pot ADDED
@@ -0,0 +1,1484 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2021 Sayful Islam
2
+ # This file is distributed under the same license as the Carousel Slider plugin.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Carousel Slider 1.10.0\n"
6
+ "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/carousel-slider\n"
7
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
+ "Language-Team: LANGUAGE <LL@li.org>\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2021-03-17T02:49:59+00:00\n"
13
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
+ "X-Generator: WP-CLI 2.4.0\n"
15
+ "X-Domain: carousel-slider\n"
16
+
17
+ #. Plugin Name of the plugin
18
+ #: classes/Admin/GutenbergBlock.php:85
19
+ #: classes/Integration/VisualComposerElement.php:40
20
+ #: classes/Widget/CarouselSliderWidget.php:73
21
+ #: includes/class-carousel-slider-admin.php:109
22
+ #: includes/class-carousel-slider-admin.php:230
23
+ msgid "Carousel Slider"
24
+ msgstr ""
25
+
26
+ #. Plugin URI of the plugin
27
+ msgid "http://wordpress.org/plugins/carousel-slider"
28
+ msgstr ""
29
+
30
+ #. Description of the plugin
31
+ msgid "<strong>Carousel Slider</strong> allows you to create beautiful, touch enabled, responsive carousels and sliders. It let you create SEO friendly Image carousel from Media Library or from custom URL, Video carousel using Youtube and Vimeo video, Post carousel, Hero banner slider and various types of WooCommerce products carousels."
32
+ msgstr ""
33
+
34
+ #. Author of the plugin
35
+ msgid "Sayful Islam"
36
+ msgstr ""
37
+
38
+ #. Author URI of the plugin
39
+ msgid "https://sayfulislam.com"
40
+ msgstr ""
41
+
42
+ #: carousel-slider.php:196
43
+ #: carousel-slider.php:219
44
+ msgid "Your installed PHP Version is: "
45
+ msgstr ""
46
+
47
+ #: carousel-slider.php:197
48
+ msgid "The Carousel Slider plugin requires PHP version %s or greater."
49
+ msgstr ""
50
+
51
+ #: carousel-slider.php:218
52
+ msgid "An Error Occurred"
53
+ msgstr ""
54
+
55
+ #: carousel-slider.php:220
56
+ msgid "The Carousel Slider plugin requires PHP version %s or greater"
57
+ msgstr ""
58
+
59
+ #: carousel-slider.php:222
60
+ msgid "The version of your PHP is %s unsupported and old %s. "
61
+ msgstr ""
62
+
63
+ #: carousel-slider.php:227
64
+ msgid "You should update your PHP software or contact your host regarding this matter."
65
+ msgstr ""
66
+
67
+ #: carousel-slider.php:230
68
+ msgid "Plugin Activation Error"
69
+ msgstr ""
70
+
71
+ #: classes/Admin/Admin.php:59
72
+ #: classes/Admin/Admin.php:60
73
+ msgid "Documentation"
74
+ msgstr ""
75
+
76
+ #: classes/Admin/Admin.php:85
77
+ msgid "If you like %1$s Carousel Slider %2$s please leave us a %3$s rating. A huge thanks in advance!"
78
+ msgstr ""
79
+
80
+ #: classes/Admin/GutenbergBlock.php:86
81
+ msgid "Select a Slider"
82
+ msgstr ""
83
+
84
+ #: classes/Admin/GutenbergBlock.php:87
85
+ msgid "Current Selected Slider"
86
+ msgstr ""
87
+
88
+ #: classes/Admin/GutenbergBlock.php:88
89
+ msgid "Type to filter sliders"
90
+ msgstr ""
91
+
92
+ #: classes/Admin/Setting.php:39
93
+ msgid "Carousel Slider Settings"
94
+ msgstr ""
95
+
96
+ #: classes/Admin/Setting.php:40
97
+ msgid "Settings"
98
+ msgstr ""
99
+
100
+ #: classes/Admin/Setting.php:41
101
+ msgid "Thank you for choosing Carousel Slider. We hope you enjoy it!"
102
+ msgstr ""
103
+
104
+ #: classes/Admin/Setting.php:50
105
+ msgid "General"
106
+ msgstr ""
107
+
108
+ #: classes/Admin/Setting.php:57
109
+ msgid "Style & Scrips"
110
+ msgstr ""
111
+
112
+ #: classes/Admin/Setting.php:58
113
+ msgid "If you choose Optimized, then scrips and styles will be loaded only on page where you are using shortcode. If Optimized is not working for you then choose Always."
114
+ msgstr ""
115
+
116
+ #: classes/Admin/Setting.php:60
117
+ #: includes/class-carousel-slider-meta-box.php:162
118
+ #: includes/class-carousel-slider-meta-box.php:204
119
+ msgid "Always"
120
+ msgstr ""
121
+
122
+ #: classes/Admin/Setting.php:61
123
+ msgid "Optimized (recommended)"
124
+ msgstr ""
125
+
126
+ #: classes/Integration/VisualComposerElement.php:41
127
+ msgid "Place Carousel Slider."
128
+ msgstr ""
129
+
130
+ #: classes/Integration/VisualComposerElement.php:45
131
+ msgid "Content"
132
+ msgstr ""
133
+
134
+ #: classes/Integration/VisualComposerElement.php:53
135
+ msgid "Choose Carousel Slide"
136
+ msgstr ""
137
+
138
+ #: classes/Widget/CarouselSliderWidget.php:71
139
+ msgid "The easiest way to create image, video, post and WooCommerce product carousel."
140
+ msgstr ""
141
+
142
+ #: classes/Widget/CarouselSliderWidget.php:115
143
+ msgid "Title (optional):"
144
+ msgstr ""
145
+
146
+ #: classes/Widget/CarouselSliderWidget.php:118
147
+ msgid "Choose Slide"
148
+ msgstr ""
149
+
150
+ #: classes/Widget/CarouselSliderWidget.php:133
151
+ msgid "You did not add any carousel slider yet."
152
+ msgstr ""
153
+
154
+ #: classes/Widget/CarouselSliderWidget.php:134
155
+ msgid "to create a new carousel slider now."
156
+ msgstr ""
157
+
158
+ #: classes/Widget/CarouselSliderWidget.php:135
159
+ msgid "click here"
160
+ msgstr ""
161
+
162
+ #: includes/class-carousel-slider-admin.php:73
163
+ #: templates/admin/images-url.php:42
164
+ #: templates/admin/images-url.php:74
165
+ msgid "URL"
166
+ msgstr ""
167
+
168
+ #: includes/class-carousel-slider-admin.php:77
169
+ #: templates/admin/images-url.php:47
170
+ #: templates/admin/images-url.php:78
171
+ msgid "Title"
172
+ msgstr ""
173
+
174
+ #: includes/class-carousel-slider-admin.php:81
175
+ #: templates/admin/images-url.php:52
176
+ #: templates/admin/images-url.php:82
177
+ msgid "Caption"
178
+ msgstr ""
179
+
180
+ #: includes/class-carousel-slider-admin.php:85
181
+ #: templates/admin/images-url.php:56
182
+ #: templates/admin/images-url.php:86
183
+ msgid "Alt Text"
184
+ msgstr ""
185
+
186
+ #: includes/class-carousel-slider-admin.php:89
187
+ #: templates/admin/images-url.php:61
188
+ #: templates/admin/images-url.php:90
189
+ msgid "Link To URL"
190
+ msgstr ""
191
+
192
+ #: includes/class-carousel-slider-admin.php:107
193
+ msgctxt "Post Type General Name"
194
+ msgid "Slides"
195
+ msgstr ""
196
+
197
+ #: includes/class-carousel-slider-admin.php:108
198
+ msgctxt "Post Type Singular Name"
199
+ msgid "Slide"
200
+ msgstr ""
201
+
202
+ #: includes/class-carousel-slider-admin.php:110
203
+ msgid "Parent Slide:"
204
+ msgstr ""
205
+
206
+ #: includes/class-carousel-slider-admin.php:111
207
+ msgid "All Slides"
208
+ msgstr ""
209
+
210
+ #: includes/class-carousel-slider-admin.php:112
211
+ msgid "View Slide"
212
+ msgstr ""
213
+
214
+ #: includes/class-carousel-slider-admin.php:113
215
+ msgid "Add New Slide"
216
+ msgstr ""
217
+
218
+ #: includes/class-carousel-slider-admin.php:114
219
+ msgid "Add New"
220
+ msgstr ""
221
+
222
+ #: includes/class-carousel-slider-admin.php:115
223
+ msgid "Edit Slide"
224
+ msgstr ""
225
+
226
+ #: includes/class-carousel-slider-admin.php:116
227
+ msgid "Update Slide"
228
+ msgstr ""
229
+
230
+ #: includes/class-carousel-slider-admin.php:117
231
+ msgid "Search Slide"
232
+ msgstr ""
233
+
234
+ #: includes/class-carousel-slider-admin.php:118
235
+ msgid "Not found"
236
+ msgstr ""
237
+
238
+ #: includes/class-carousel-slider-admin.php:119
239
+ msgid "Not found in Trash"
240
+ msgstr ""
241
+
242
+ #: includes/class-carousel-slider-admin.php:122
243
+ #: templates/admin/hero-banner-slider.php:106
244
+ msgid "Slide"
245
+ msgstr ""
246
+
247
+ #: includes/class-carousel-slider-admin.php:123
248
+ msgid "The easiest way to create carousel slide"
249
+ msgstr ""
250
+
251
+ #: includes/class-carousel-slider-admin.php:163
252
+ msgid "Preview"
253
+ msgstr ""
254
+
255
+ #: includes/class-carousel-slider-admin.php:179
256
+ msgid "Carousel Slide Title"
257
+ msgstr ""
258
+
259
+ #: includes/class-carousel-slider-admin.php:180
260
+ msgid "Shortcode"
261
+ msgstr ""
262
+
263
+ #: includes/class-carousel-slider-admin.php:181
264
+ #: templates/admin/types.php:11
265
+ msgid "Slide Type"
266
+ msgstr ""
267
+
268
+ #: includes/class-carousel-slider-admin.php:390
269
+ msgid "Link to URL"
270
+ msgstr ""
271
+
272
+ #: includes/class-carousel-slider-admin.php:395
273
+ msgid "\"Link to URL\" only works on Carousel Slider for linking image to a custom url."
274
+ msgstr ""
275
+
276
+ #: includes/class-carousel-slider-form.php:210
277
+ msgid "Create Gallery"
278
+ msgstr ""
279
+
280
+ #: includes/class-carousel-slider-form.php:211
281
+ msgid "Edit Gallery"
282
+ msgstr ""
283
+
284
+ #: includes/class-carousel-slider-form.php:212
285
+ msgid "Save Gallery"
286
+ msgstr ""
287
+
288
+ #: includes/class-carousel-slider-form.php:213
289
+ msgid "Saving..."
290
+ msgstr ""
291
+
292
+ #: includes/class-carousel-slider-form.php:214
293
+ msgid "Insert"
294
+ msgstr ""
295
+
296
+ #: includes/class-carousel-slider-form.php:238
297
+ msgid "Edit URLs"
298
+ msgstr ""
299
+
300
+ #: includes/class-carousel-slider-form.php:238
301
+ msgid "Add URLs"
302
+ msgstr ""
303
+
304
+ #: includes/class-carousel-slider-form.php:262
305
+ msgid "Browse"
306
+ msgstr ""
307
+
308
+ #: includes/class-carousel-slider-hero-carousel.php:33
309
+ msgid "Required attribute is not set properly."
310
+ msgstr ""
311
+
312
+ #: includes/class-carousel-slider-hero-carousel.php:65
313
+ msgid "Required action is unauthorized."
314
+ msgstr ""
315
+
316
+ #: includes/class-carousel-slider-meta-box.php:54
317
+ msgid "Usage (Shortcode)"
318
+ msgstr ""
319
+
320
+ #: includes/class-carousel-slider-meta-box.php:62
321
+ #: templates/admin/navigation.php:9
322
+ msgid "Navigation Settings"
323
+ msgstr ""
324
+
325
+ #: includes/class-carousel-slider-meta-box.php:70
326
+ #: templates/admin/autoplay.php:9
327
+ msgid "Autoplay Settings"
328
+ msgstr ""
329
+
330
+ #: includes/class-carousel-slider-meta-box.php:78
331
+ #: templates/admin/responsive.php:9
332
+ msgid "Responsive Settings"
333
+ msgstr ""
334
+
335
+ #: includes/class-carousel-slider-meta-box.php:86
336
+ msgid "General Settings"
337
+ msgstr ""
338
+
339
+ #: includes/class-carousel-slider-meta-box.php:110
340
+ msgid "Copy the following shortcode and paste in post or page where you want to show."
341
+ msgstr ""
342
+
343
+ #: includes/class-carousel-slider-meta-box.php:157
344
+ msgid "Show Arrow Nav"
345
+ msgstr ""
346
+
347
+ #: includes/class-carousel-slider-meta-box.php:160
348
+ #: includes/class-carousel-slider-meta-box.php:203
349
+ msgid "Never"
350
+ msgstr ""
351
+
352
+ #: includes/class-carousel-slider-meta-box.php:161
353
+ #: includes/class-carousel-slider-meta-box.php:205
354
+ msgid "Mouse Over"
355
+ msgstr ""
356
+
357
+ #: includes/class-carousel-slider-meta-box.php:165
358
+ msgid "Choose when to show arrow navigator."
359
+ msgstr ""
360
+
361
+ #: includes/class-carousel-slider-meta-box.php:169
362
+ msgid "Arrow Steps"
363
+ msgstr ""
364
+
365
+ #: includes/class-carousel-slider-meta-box.php:174
366
+ msgid "Steps to go for each navigation request. Write \"page\" with inverted comma to slide by page."
367
+ msgstr ""
368
+
369
+ #: includes/class-carousel-slider-meta-box.php:178
370
+ msgid "Arrow Position"
371
+ msgstr ""
372
+
373
+ #: includes/class-carousel-slider-meta-box.php:181
374
+ msgid "Outside"
375
+ msgstr ""
376
+
377
+ #: includes/class-carousel-slider-meta-box.php:182
378
+ msgid "Inside"
379
+ msgstr ""
380
+
381
+ #: includes/class-carousel-slider-meta-box.php:185
382
+ msgid "Choose where to show arrow. Inside slider or outside slider."
383
+ msgstr ""
384
+
385
+ #: includes/class-carousel-slider-meta-box.php:189
386
+ msgid "Arrow Size"
387
+ msgstr ""
388
+
389
+ #: includes/class-carousel-slider-meta-box.php:194
390
+ msgid "Enter arrow size in pixels."
391
+ msgstr ""
392
+
393
+ #: includes/class-carousel-slider-meta-box.php:200
394
+ msgid "Show Bullet Nav"
395
+ msgstr ""
396
+
397
+ #: includes/class-carousel-slider-meta-box.php:208
398
+ msgid "Choose when to show bullet navigator."
399
+ msgstr ""
400
+
401
+ #: includes/class-carousel-slider-meta-box.php:212
402
+ msgid "Bullet Position"
403
+ msgstr ""
404
+
405
+ #: includes/class-carousel-slider-meta-box.php:215
406
+ msgid "Left"
407
+ msgstr ""
408
+
409
+ #: includes/class-carousel-slider-meta-box.php:216
410
+ msgid "Center"
411
+ msgstr ""
412
+
413
+ #: includes/class-carousel-slider-meta-box.php:217
414
+ msgid "Right"
415
+ msgstr ""
416
+
417
+ #: includes/class-carousel-slider-meta-box.php:220
418
+ msgid "Choose where to show bullets."
419
+ msgstr ""
420
+
421
+ #: includes/class-carousel-slider-meta-box.php:224
422
+ msgid "Bullet Size"
423
+ msgstr ""
424
+
425
+ #: includes/class-carousel-slider-meta-box.php:229
426
+ msgid "Enter bullet size in pixels."
427
+ msgstr ""
428
+
429
+ #: includes/class-carousel-slider-meta-box.php:233
430
+ msgid "Bullet Shape"
431
+ msgstr ""
432
+
433
+ #: includes/class-carousel-slider-meta-box.php:236
434
+ msgid "Square"
435
+ msgstr ""
436
+
437
+ #: includes/class-carousel-slider-meta-box.php:237
438
+ msgid "Circle"
439
+ msgstr ""
440
+
441
+ #: includes/class-carousel-slider-meta-box.php:240
442
+ msgid "Choose bullet nav shape."
443
+ msgstr ""
444
+
445
+ #: includes/class-carousel-slider-meta-box.php:246
446
+ msgid "Arrows & Dots Color"
447
+ msgstr ""
448
+
449
+ #: includes/class-carousel-slider-meta-box.php:249
450
+ #: templates/admin/navigation.php:30
451
+ msgid "Pick a color for navigation and dots."
452
+ msgstr ""
453
+
454
+ #: includes/class-carousel-slider-meta-box.php:258
455
+ msgid "Arrows & Dots Hover Color"
456
+ msgstr ""
457
+
458
+ #: includes/class-carousel-slider-meta-box.php:261
459
+ #: templates/admin/navigation.php:36
460
+ msgid "Pick a color for navigation and dots for active and hover effect."
461
+ msgstr ""
462
+
463
+ #: includes/class-carousel-slider-meta-box.php:285
464
+ msgid "AutoPlay"
465
+ msgstr ""
466
+
467
+ #: includes/class-carousel-slider-meta-box.php:288
468
+ #: includes/class-carousel-slider-meta-box.php:299
469
+ msgid "Enable"
470
+ msgstr ""
471
+
472
+ #: includes/class-carousel-slider-meta-box.php:289
473
+ #: includes/class-carousel-slider-meta-box.php:300
474
+ msgid "Disable"
475
+ msgstr ""
476
+
477
+ #: includes/class-carousel-slider-meta-box.php:292
478
+ msgid "Choose whether slideshow should play automatically."
479
+ msgstr ""
480
+
481
+ #: includes/class-carousel-slider-meta-box.php:296
482
+ msgid "Pause On Hover"
483
+ msgstr ""
484
+
485
+ #: includes/class-carousel-slider-meta-box.php:303
486
+ msgid "Pause automatic play on mouse hover."
487
+ msgstr ""
488
+
489
+ #: includes/class-carousel-slider-meta-box.php:307
490
+ #: templates/admin/autoplay.php:23
491
+ msgid "Autoplay Timeout"
492
+ msgstr ""
493
+
494
+ #: includes/class-carousel-slider-meta-box.php:312
495
+ msgid "Automatic play interval timeout in millisecond. Default: 5000"
496
+ msgstr ""
497
+
498
+ #: includes/class-carousel-slider-meta-box.php:316
499
+ #: templates/admin/autoplay.php:30
500
+ msgid "Autoplay Speed"
501
+ msgstr ""
502
+
503
+ #: includes/class-carousel-slider-meta-box.php:321
504
+ msgid "Automatic play speed in millisecond. Default: 500"
505
+ msgstr ""
506
+
507
+ #: includes/class-carousel-slider-meta-box.php:352
508
+ #: templates/admin/responsive.php:17
509
+ msgid "Columns"
510
+ msgstr ""
511
+
512
+ #: includes/class-carousel-slider-meta-box.php:357
513
+ #: templates/admin/responsive.php:18
514
+ msgid "The number of items you want to see on the Extra Large Desktop Layout (Screens size greater than 1921 pixels DP)"
515
+ msgstr ""
516
+
517
+ #: includes/class-carousel-slider-meta-box.php:361
518
+ #: templates/admin/responsive.php:24
519
+ msgid "Columns : Desktop"
520
+ msgstr ""
521
+
522
+ #: includes/class-carousel-slider-meta-box.php:366
523
+ #: templates/admin/responsive.php:25
524
+ msgid "The number of items you want to see on the Desktop Layout (Screens size from 1200 pixels DP to 1920 pixels DP)"
525
+ msgstr ""
526
+
527
+ #: includes/class-carousel-slider-meta-box.php:370
528
+ #: templates/admin/responsive.php:31
529
+ msgid "Columns : Small Desktop"
530
+ msgstr ""
531
+
532
+ #: includes/class-carousel-slider-meta-box.php:376
533
+ #: templates/admin/responsive.php:32
534
+ msgid "The number of items you want to see on the Small Desktop Layout (Screens size from 993 pixels DP to 1199 pixels DP)"
535
+ msgstr ""
536
+
537
+ #: includes/class-carousel-slider-meta-box.php:380
538
+ #: templates/admin/responsive.php:37
539
+ msgid "Columns : Tablet"
540
+ msgstr ""
541
+
542
+ #: includes/class-carousel-slider-meta-box.php:386
543
+ #: templates/admin/responsive.php:38
544
+ msgid "The number of items you want to see on the Tablet Layout (Screens size from 768 pixels DP to 992 pixels DP)"
545
+ msgstr ""
546
+
547
+ #: includes/class-carousel-slider-meta-box.php:390
548
+ #: templates/admin/responsive.php:43
549
+ msgid "Columns : Small Tablet"
550
+ msgstr ""
551
+
552
+ #: includes/class-carousel-slider-meta-box.php:397
553
+ #: templates/admin/responsive.php:44
554
+ msgid "The number of items you want to see on the Small Tablet Layout(Screens size from 600 pixels DP to 767 pixels DP)"
555
+ msgstr ""
556
+
557
+ #: includes/class-carousel-slider-meta-box.php:401
558
+ #: templates/admin/responsive.php:49
559
+ msgid "Columns : Mobile"
560
+ msgstr ""
561
+
562
+ #: includes/class-carousel-slider-meta-box.php:408
563
+ #: templates/admin/responsive.php:50
564
+ msgid "The number of items you want to see on the Mobile Layout (Screens size from 320 pixels DP to 599 pixels DP)"
565
+ msgstr ""
566
+
567
+ #: includes/class-carousel-slider-product.php:112
568
+ #: templates/public/product-carousel.php:110
569
+ msgid "Quick View"
570
+ msgstr ""
571
+
572
+ #: includes/class-carousel-slider-product.php:140
573
+ #: templates/public/product-carousel.php:78
574
+ msgid "Sale!"
575
+ msgstr ""
576
+
577
+ #: includes/functions-carousel-slider.php:520
578
+ msgid "Image Carousel"
579
+ msgstr ""
580
+
581
+ #: includes/functions-carousel-slider.php:521
582
+ msgid "Image Carousel (URL)"
583
+ msgstr ""
584
+
585
+ #: includes/functions-carousel-slider.php:522
586
+ msgid "Post Carousel"
587
+ msgstr ""
588
+
589
+ #: includes/functions-carousel-slider.php:523
590
+ msgid "Product Carousel"
591
+ msgstr ""
592
+
593
+ #: includes/functions-carousel-slider.php:524
594
+ msgid "Video Carousel"
595
+ msgstr ""
596
+
597
+ #: includes/functions-carousel-slider.php:525
598
+ msgid "Hero Carousel"
599
+ msgstr ""
600
+
601
+ #: templates/admin/autoplay.php:16
602
+ msgid "Autoplay"
603
+ msgstr ""
604
+
605
+ #: templates/admin/autoplay.php:17
606
+ msgid "Autoplay."
607
+ msgstr ""
608
+
609
+ #: templates/admin/autoplay.php:18
610
+ msgid "Check to enable autoplay"
611
+ msgstr ""
612
+
613
+ #: templates/admin/autoplay.php:24
614
+ msgid "Autoplay interval timeout in millisecond. Default: 5000"
615
+ msgstr ""
616
+
617
+ #: templates/admin/autoplay.php:31
618
+ msgid "Autoplay speed in millisecond. Default: 500"
619
+ msgstr ""
620
+
621
+ #: templates/admin/autoplay.php:36
622
+ msgid "Autoplay Hover Pause"
623
+ msgstr ""
624
+
625
+ #: templates/admin/autoplay.php:37
626
+ msgid "Pause on mouse hover."
627
+ msgstr ""
628
+
629
+ #: templates/admin/autoplay.php:38
630
+ msgid "Pause autoplay on mouse hover."
631
+ msgstr ""
632
+
633
+ #: templates/admin/documentation.php:9
634
+ msgid "Carousel Slider Documentation"
635
+ msgstr ""
636
+
637
+ #: templates/admin/documentation.php:20
638
+ msgid "Hero Image Carousel"
639
+ msgstr ""
640
+
641
+ #: templates/admin/documentation.php:21
642
+ msgid "Hero carousel demo."
643
+ msgstr ""
644
+
645
+ #: templates/admin/documentation.php:30
646
+ #: templates/admin/documentation.php:39
647
+ msgid "Images Carousel"
648
+ msgstr ""
649
+
650
+ #: templates/admin/documentation.php:31
651
+ msgid "Image carousel using gallery images"
652
+ msgstr ""
653
+
654
+ #: templates/admin/documentation.php:40
655
+ msgid "Image carousel using custom URLs"
656
+ msgstr ""
657
+
658
+ #: templates/admin/documentation.php:48
659
+ msgid "Posts Carousel"
660
+ msgstr ""
661
+
662
+ #: templates/admin/documentation.php:56
663
+ msgid "WooCommerce Products Carousel"
664
+ msgstr ""
665
+
666
+ #: templates/admin/documentation.php:64
667
+ msgid "In Widget Areas"
668
+ msgstr ""
669
+
670
+ #: templates/admin/documentation.php:72
671
+ msgid "With Page Builder by SiteOrigin"
672
+ msgstr ""
673
+
674
+ #: templates/admin/documentation.php:80
675
+ msgid "With Visual Composer Website Builder"
676
+ msgstr ""
677
+
678
+ #: templates/admin/general.php:8
679
+ msgid "_image_size"
680
+ msgstr ""
681
+
682
+ #: templates/admin/general.php:9
683
+ msgid "Carousel Image size"
684
+ msgstr ""
685
+
686
+ #: templates/admin/general.php:11
687
+ msgid "Choose \"original uploaded image\" for full size image or your desired image size for carousel image. You can change the default size for thumbnail, medium and large from %1$s Settings >> Media %2$s."
688
+ msgstr ""
689
+
690
+ #: templates/admin/general.php:17
691
+ msgid "Lazy Loading"
692
+ msgstr ""
693
+
694
+ #: templates/admin/general.php:18
695
+ msgid "Enable image with lazy loading."
696
+ msgstr ""
697
+
698
+ #: templates/admin/general.php:27
699
+ msgid "Item Spacing."
700
+ msgstr ""
701
+
702
+ #: templates/admin/general.php:28
703
+ msgid "Space between two slide. Enter 10 for 10px"
704
+ msgstr ""
705
+
706
+ #: templates/admin/general.php:33
707
+ msgid "Infinity loop"
708
+ msgstr ""
709
+
710
+ #: templates/admin/general.php:34
711
+ msgid "Enable or disable loop(circular) of carousel."
712
+ msgstr ""
713
+
714
+ #: templates/admin/general.php:43
715
+ msgid "Stage Padding"
716
+ msgstr ""
717
+
718
+ #: templates/admin/general.php:44
719
+ msgid "Add left and right padding on carousel slider stage wrapper."
720
+ msgstr ""
721
+
722
+ #: templates/admin/general.php:49
723
+ msgid "Auto Width"
724
+ msgstr ""
725
+
726
+ #: templates/admin/general.php:50
727
+ msgid "Set item width according to its content width. Use width style on item to get the result you want. "
728
+ msgstr ""
729
+
730
+ #: templates/admin/hero-banner-slider.php:10
731
+ msgid "Hero Banner Slider"
732
+ msgstr ""
733
+
734
+ #: templates/admin/hero-banner-slider.php:116
735
+ msgid "Delete current slide"
736
+ msgstr ""
737
+
738
+ #: templates/admin/hero-banner-slider.php:129
739
+ msgid "Move Slide to Top"
740
+ msgstr ""
741
+
742
+ #: templates/admin/hero-banner-slider.php:140
743
+ msgid "Move Slide Up"
744
+ msgstr ""
745
+
746
+ #: templates/admin/hero-banner-slider.php:152
747
+ msgid "Move Slide Down"
748
+ msgstr ""
749
+
750
+ #: templates/admin/hero-banner-slider.php:162
751
+ msgid "Move Slide to Bottom"
752
+ msgstr ""
753
+
754
+ #: templates/admin/hero-banner-slider.php:180
755
+ msgid "Slide Background"
756
+ msgstr ""
757
+
758
+ #: templates/admin/hero-banner-slider.php:184
759
+ msgid "Slide Content"
760
+ msgstr ""
761
+
762
+ #: templates/admin/hero-banner-slider.php:188
763
+ #: templates/admin/parts/hero-banner/tab-link.php:27
764
+ msgid "Slide Link"
765
+ msgstr ""
766
+
767
+ #: templates/admin/hero-banner-slider.php:192
768
+ msgid "Slide Style"
769
+ msgstr ""
770
+
771
+ #: templates/admin/hero-banner-slider.php:220
772
+ msgid "Slide Height"
773
+ msgstr ""
774
+
775
+ #: templates/admin/hero-banner-slider.php:222
776
+ msgid "Enter a px, em, rem or vh value for slide height. ex: 100vh"
777
+ msgstr ""
778
+
779
+ #: templates/admin/hero-banner-slider.php:232
780
+ msgid "Slider Content Max Width"
781
+ msgstr ""
782
+
783
+ #: templates/admin/hero-banner-slider.php:234
784
+ msgid "Enter a px, em, rem or % value for slide height. ex: 960px"
785
+ msgstr ""
786
+
787
+ #: templates/admin/hero-banner-slider.php:244
788
+ msgid "None"
789
+ msgstr ""
790
+
791
+ #: templates/admin/hero-banner-slider.php:245
792
+ msgid "Fade In Down"
793
+ msgstr ""
794
+
795
+ #: templates/admin/hero-banner-slider.php:246
796
+ msgid "Fade In Up"
797
+ msgstr ""
798
+
799
+ #: templates/admin/hero-banner-slider.php:247
800
+ msgid "Fade In Right"
801
+ msgstr ""
802
+
803
+ #: templates/admin/hero-banner-slider.php:248
804
+ msgid "Fade In Left"
805
+ msgstr ""
806
+
807
+ #: templates/admin/hero-banner-slider.php:249
808
+ msgid "Zoom In"
809
+ msgstr ""
810
+
811
+ #: templates/admin/hero-banner-slider.php:254
812
+ msgid "Content Animation"
813
+ msgstr ""
814
+
815
+ #: templates/admin/hero-banner-slider.php:256
816
+ msgid "Select slide content animation."
817
+ msgstr ""
818
+
819
+ #: templates/admin/hero-banner-slider.php:273
820
+ msgid "Slider Padding"
821
+ msgstr ""
822
+
823
+ #: templates/admin/hero-banner-slider.php:275
824
+ msgid "Enter padding around slide in px, em or rem."
825
+ msgstr ""
826
+
827
+ #: templates/admin/images-media.php:10
828
+ msgid "Media Images"
829
+ msgstr ""
830
+
831
+ #: templates/admin/images-media.php:17
832
+ msgid "Carousel Images"
833
+ msgstr ""
834
+
835
+ #: templates/admin/images-media.php:18
836
+ msgid "Choose carousel images from media library."
837
+ msgstr ""
838
+
839
+ #: templates/admin/images-settings.php:12
840
+ msgid "Image Carousel Settings"
841
+ msgstr ""
842
+
843
+ #: templates/admin/images-settings.php:19
844
+ #: templates/admin/images-settings.php:20
845
+ msgid "Show Image Title"
846
+ msgstr ""
847
+
848
+ #: templates/admin/images-settings.php:21
849
+ msgid "Check to show title below image. Only works with image carousel."
850
+ msgstr ""
851
+
852
+ #: templates/admin/images-settings.php:26
853
+ #: templates/admin/images-settings.php:27
854
+ msgid "Show Image Caption"
855
+ msgstr ""
856
+
857
+ #: templates/admin/images-settings.php:28
858
+ msgid "Check to show caption below image. Only works with image carousel."
859
+ msgstr ""
860
+
861
+ #: templates/admin/images-settings.php:33
862
+ msgid "Image Target"
863
+ msgstr ""
864
+
865
+ #: templates/admin/images-settings.php:34
866
+ msgid "Choose where to open the linked image."
867
+ msgstr ""
868
+
869
+ #: templates/admin/images-settings.php:37
870
+ msgid "Open in the same frame as it was clicked"
871
+ msgstr ""
872
+
873
+ #: templates/admin/images-settings.php:38
874
+ msgid "Open in a new window or tab"
875
+ msgstr ""
876
+
877
+ #: templates/admin/images-settings.php:43
878
+ #: templates/admin/images-settings.php:44
879
+ msgid "Show Lightbox Gallery"
880
+ msgstr ""
881
+
882
+ #: templates/admin/images-settings.php:45
883
+ msgid "Check to show lightbox gallery."
884
+ msgstr ""
885
+
886
+ #: templates/admin/images-url.php:13
887
+ msgid "URL Images"
888
+ msgstr ""
889
+
890
+ #: templates/admin/images-url.php:20
891
+ msgid "Images URLs"
892
+ msgstr ""
893
+
894
+ #: templates/admin/images-url.php:21
895
+ msgid "Enter external images URLs."
896
+ msgstr ""
897
+
898
+ #: templates/admin/images-url.php:35
899
+ msgid "Image Carousel - from URL"
900
+ msgstr ""
901
+
902
+ #: templates/admin/images-url.php:104
903
+ msgid "Save"
904
+ msgstr ""
905
+
906
+ #: templates/admin/navigation.php:16
907
+ #: templates/admin/navigation.php:17
908
+ msgid "Navigation"
909
+ msgstr ""
910
+
911
+ #: templates/admin/navigation.php:18
912
+ msgid "Check to show next/prev icons."
913
+ msgstr ""
914
+
915
+ #: templates/admin/navigation.php:22
916
+ #: templates/admin/navigation.php:23
917
+ msgid "Dots"
918
+ msgstr ""
919
+
920
+ #: templates/admin/navigation.php:24
921
+ msgid "Check to show dots navigation."
922
+ msgstr ""
923
+
924
+ #: templates/admin/navigation.php:29
925
+ msgid "Navigation & Dots Color\t"
926
+ msgstr ""
927
+
928
+ #: templates/admin/navigation.php:35
929
+ msgid "Navigation & Dots Color: Hover & Active"
930
+ msgstr ""
931
+
932
+ #: templates/admin/parts/hero-banner/tab-background.php:14
933
+ msgid "Delete the background image for this slide"
934
+ msgstr ""
935
+
936
+ #: templates/admin/parts/hero-banner/tab-background.php:21
937
+ msgid "Select or Upload Slide Background Image"
938
+ msgstr ""
939
+
940
+ #: templates/admin/parts/hero-banner/tab-background.php:22
941
+ #: templates/admin/parts/hero-banner/tab-background.php:23
942
+ msgid "Set Background Image"
943
+ msgstr ""
944
+
945
+ #: templates/admin/parts/hero-banner/tab-background.php:30
946
+ msgid "Background Position:"
947
+ msgstr ""
948
+
949
+ #: templates/admin/parts/hero-banner/tab-background.php:48
950
+ msgid "Background Size:"
951
+ msgstr ""
952
+
953
+ #: templates/admin/parts/hero-banner/tab-background.php:61
954
+ msgid "Ken Burns Effect:"
955
+ msgstr ""
956
+
957
+ #: templates/admin/parts/hero-banner/tab-background.php:71
958
+ msgid "Background Color:"
959
+ msgstr ""
960
+
961
+ #: templates/admin/parts/hero-banner/tab-background.php:78
962
+ msgid "Background Overlay:"
963
+ msgstr ""
964
+
965
+ #: templates/admin/parts/hero-banner/tab-content.php:11
966
+ msgid "Slide Heading"
967
+ msgstr ""
968
+
969
+ #: templates/admin/parts/hero-banner/tab-content.php:12
970
+ msgid "Enter the heading for your slide. This field can take HTML markup."
971
+ msgstr ""
972
+
973
+ #: templates/admin/parts/hero-banner/tab-content.php:23
974
+ msgid "Slide Description"
975
+ msgstr ""
976
+
977
+ #: templates/admin/parts/hero-banner/tab-content.php:24
978
+ msgid "Enter the description for your slide. This field can take HTML markup."
979
+ msgstr ""
980
+
981
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:9
982
+ msgid "Button #1"
983
+ msgstr ""
984
+
985
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:16
986
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:16
987
+ msgid "Button Text"
988
+ msgstr ""
989
+
990
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:17
991
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:17
992
+ msgid "Add the button text"
993
+ msgstr ""
994
+
995
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:27
996
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:27
997
+ msgid "Button URL"
998
+ msgstr ""
999
+
1000
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:28
1001
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:28
1002
+ msgid "Add the button url e.g. http://example.com"
1003
+ msgstr ""
1004
+
1005
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:38
1006
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:38
1007
+ msgid "Open Button Link In"
1008
+ msgstr ""
1009
+
1010
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:43
1011
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:43
1012
+ msgid "New Window"
1013
+ msgstr ""
1014
+
1015
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:44
1016
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:44
1017
+ msgid "Same window"
1018
+ msgstr ""
1019
+
1020
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:51
1021
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:51
1022
+ msgid "Button Type"
1023
+ msgstr ""
1024
+
1025
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:56
1026
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:56
1027
+ msgid "Normal"
1028
+ msgstr ""
1029
+
1030
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:57
1031
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:57
1032
+ msgid "Stroke"
1033
+ msgstr ""
1034
+
1035
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:64
1036
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:64
1037
+ msgid "Button Size"
1038
+ msgstr ""
1039
+
1040
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:69
1041
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:69
1042
+ msgid "Large"
1043
+ msgstr ""
1044
+
1045
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:70
1046
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:70
1047
+ msgid "Medium"
1048
+ msgstr ""
1049
+
1050
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:71
1051
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:71
1052
+ msgid "Small"
1053
+ msgstr ""
1054
+
1055
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:78
1056
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:79
1057
+ msgid "Border Width"
1058
+ msgstr ""
1059
+
1060
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:79
1061
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:80
1062
+ msgid "Enter border width in pixel. e.g. 2px"
1063
+ msgstr ""
1064
+
1065
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:90
1066
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:91
1067
+ msgid "Border Radius"
1068
+ msgstr ""
1069
+
1070
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:91
1071
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:92
1072
+ msgid "Enter border radius in pixel. e.g. 3px"
1073
+ msgstr ""
1074
+
1075
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:102
1076
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:103
1077
+ msgid "Button Color"
1078
+ msgstr ""
1079
+
1080
+ #: templates/admin/parts/hero-banner/tab-link-button-one.php:113
1081
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:114
1082
+ #: templates/admin/product-carousel.php:132
1083
+ msgid "Button Text Color"
1084
+ msgstr ""
1085
+
1086
+ #: templates/admin/parts/hero-banner/tab-link-button-two.php:9
1087
+ msgid "Button #2"
1088
+ msgstr ""
1089
+
1090
+ #: templates/admin/parts/hero-banner/tab-link.php:11
1091
+ msgid "Slide Link Type"
1092
+ msgstr ""
1093
+
1094
+ #: templates/admin/parts/hero-banner/tab-link.php:12
1095
+ msgid "Select how the slide will link."
1096
+ msgstr ""
1097
+
1098
+ #: templates/admin/parts/hero-banner/tab-link.php:17
1099
+ msgid "No Link"
1100
+ msgstr ""
1101
+
1102
+ #: templates/admin/parts/hero-banner/tab-link.php:18
1103
+ msgid "Full Slide"
1104
+ msgstr ""
1105
+
1106
+ #: templates/admin/parts/hero-banner/tab-link.php:19
1107
+ msgid "Button"
1108
+ msgstr ""
1109
+
1110
+ #: templates/admin/parts/hero-banner/tab-link.php:28
1111
+ msgid "Please enter your URL that will be used to link the full slide."
1112
+ msgstr ""
1113
+
1114
+ #: templates/admin/parts/hero-banner/tab-link.php:39
1115
+ msgid "Open Slide Link In New Window"
1116
+ msgstr ""
1117
+
1118
+ #: templates/admin/parts/hero-banner/tab-link.php:44
1119
+ msgid "Yes"
1120
+ msgstr ""
1121
+
1122
+ #: templates/admin/parts/hero-banner/tab-link.php:45
1123
+ msgid "No"
1124
+ msgstr ""
1125
+
1126
+ #: templates/admin/parts/hero-banner/tab-style.php:11
1127
+ msgid "Content Alignment"
1128
+ msgstr ""
1129
+
1130
+ #: templates/admin/parts/hero-banner/tab-style.php:12
1131
+ msgid "Select how the heading, description and buttons will be aligned"
1132
+ msgstr ""
1133
+
1134
+ #: templates/admin/parts/hero-banner/tab-style.php:26
1135
+ msgid "Heading Font Size"
1136
+ msgstr ""
1137
+
1138
+ #: templates/admin/parts/hero-banner/tab-style.php:27
1139
+ msgid "Enter heading font size without px unit. In pixels, ex: 50 instead of 50px. Default: 60"
1140
+ msgstr ""
1141
+
1142
+ #: templates/admin/parts/hero-banner/tab-style.php:38
1143
+ msgid "Spacing/Gutter"
1144
+ msgstr ""
1145
+
1146
+ #: templates/admin/parts/hero-banner/tab-style.php:39
1147
+ msgid "Enter gutter (space between description and heading) in px, em or rem, ex: 3rem"
1148
+ msgstr ""
1149
+
1150
+ #: templates/admin/parts/hero-banner/tab-style.php:49
1151
+ msgid "Heading Color"
1152
+ msgstr ""
1153
+
1154
+ #: templates/admin/parts/hero-banner/tab-style.php:50
1155
+ msgid "Select a color for the heading font. Default: #fff"
1156
+ msgstr ""
1157
+
1158
+ #: templates/admin/parts/hero-banner/tab-style.php:62
1159
+ msgid "Description Font Size"
1160
+ msgstr ""
1161
+
1162
+ #: templates/admin/parts/hero-banner/tab-style.php:63
1163
+ msgid "Enter description font size without px unit. In pixels, ex: 20 instead of 20px. Default: 24"
1164
+ msgstr ""
1165
+
1166
+ #: templates/admin/parts/hero-banner/tab-style.php:74
1167
+ msgid "Description Spacing/Gutter"
1168
+ msgstr ""
1169
+
1170
+ #: templates/admin/parts/hero-banner/tab-style.php:75
1171
+ msgid "Enter gutter (space between description and buttons) in px, em or rem, ex: 3rem"
1172
+ msgstr ""
1173
+
1174
+ #: templates/admin/parts/hero-banner/tab-style.php:85
1175
+ msgid "Description Color"
1176
+ msgstr ""
1177
+
1178
+ #: templates/admin/parts/hero-banner/tab-style.php:86
1179
+ msgid "Select a color for the description font. Default: #fff"
1180
+ msgstr ""
1181
+
1182
+ #: templates/admin/post-carousel.php:10
1183
+ msgid "Post Query"
1184
+ msgstr ""
1185
+
1186
+ #: templates/admin/post-carousel.php:17
1187
+ #: templates/admin/product-carousel.php:17
1188
+ msgid "Query Type"
1189
+ msgstr ""
1190
+
1191
+ #: templates/admin/post-carousel.php:20
1192
+ msgid "Latest Posts"
1193
+ msgstr ""
1194
+
1195
+ #: templates/admin/post-carousel.php:21
1196
+ msgid "Date Range"
1197
+ msgstr ""
1198
+
1199
+ #: templates/admin/post-carousel.php:22
1200
+ #: templates/admin/post-carousel.php:41
1201
+ msgid "Post Categories"
1202
+ msgstr ""
1203
+
1204
+ #: templates/admin/post-carousel.php:23
1205
+ #: templates/admin/post-carousel.php:48
1206
+ msgid "Post Tags"
1207
+ msgstr ""
1208
+
1209
+ #: templates/admin/post-carousel.php:24
1210
+ #: templates/admin/post-carousel.php:54
1211
+ msgid "Specific posts"
1212
+ msgstr ""
1213
+
1214
+ #: templates/admin/post-carousel.php:29
1215
+ msgid "Date from"
1216
+ msgstr ""
1217
+
1218
+ #: templates/admin/post-carousel.php:30
1219
+ #: templates/admin/post-carousel.php:35
1220
+ msgid "Example: %s"
1221
+ msgstr ""
1222
+
1223
+ #: templates/admin/post-carousel.php:34
1224
+ msgid "Date to"
1225
+ msgstr ""
1226
+
1227
+ #: templates/admin/post-carousel.php:42
1228
+ msgid "Show posts associated with selected categories."
1229
+ msgstr ""
1230
+
1231
+ #: templates/admin/post-carousel.php:49
1232
+ msgid "Show posts associated with selected tags."
1233
+ msgstr ""
1234
+
1235
+ #: templates/admin/post-carousel.php:55
1236
+ msgid "Select posts that you want to show as slider. Select at least 5 posts"
1237
+ msgstr ""
1238
+
1239
+ #: templates/admin/post-carousel.php:59
1240
+ msgid "Posts per page"
1241
+ msgstr ""
1242
+
1243
+ #: templates/admin/post-carousel.php:61
1244
+ msgid "How many post you want to show on carousel slide."
1245
+ msgstr ""
1246
+
1247
+ #: templates/admin/post-carousel.php:65
1248
+ msgid "Order"
1249
+ msgstr ""
1250
+
1251
+ #: templates/admin/post-carousel.php:68
1252
+ msgid "Ascending Order"
1253
+ msgstr ""
1254
+
1255
+ #: templates/admin/post-carousel.php:69
1256
+ msgid "Descending Order"
1257
+ msgstr ""
1258
+
1259
+ #: templates/admin/post-carousel.php:74
1260
+ msgid "Order by"
1261
+ msgstr ""
1262
+
1263
+ #: templates/admin/post-carousel.php:77
1264
+ msgid "No order"
1265
+ msgstr ""
1266
+
1267
+ #: templates/admin/post-carousel.php:78
1268
+ msgid "Post id"
1269
+ msgstr ""
1270
+
1271
+ #: templates/admin/post-carousel.php:79
1272
+ msgid "Post author"
1273
+ msgstr ""
1274
+
1275
+ #: templates/admin/post-carousel.php:80
1276
+ msgid "Post title"
1277
+ msgstr ""
1278
+
1279
+ #: templates/admin/post-carousel.php:81
1280
+ msgid "Last modified date"
1281
+ msgstr ""
1282
+
1283
+ #: templates/admin/post-carousel.php:82
1284
+ msgid "Random order"
1285
+ msgstr ""
1286
+
1287
+ #: templates/admin/post-carousel.php:83
1288
+ msgid "Number of comments"
1289
+ msgstr ""
1290
+
1291
+ #: templates/admin/product-carousel.php:10
1292
+ msgid "Product Query"
1293
+ msgstr ""
1294
+
1295
+ #: templates/admin/product-carousel.php:20
1296
+ msgid "Query Products"
1297
+ msgstr ""
1298
+
1299
+ #: templates/admin/product-carousel.php:21
1300
+ #: templates/admin/product-carousel.php:43
1301
+ msgid "Product Categories"
1302
+ msgstr ""
1303
+
1304
+ #: templates/admin/product-carousel.php:22
1305
+ #: templates/admin/product-carousel.php:50
1306
+ msgid "Product Tags"
1307
+ msgstr ""
1308
+
1309
+ #: templates/admin/product-carousel.php:23
1310
+ msgid "Specific Products"
1311
+ msgstr ""
1312
+
1313
+ #: templates/admin/product-carousel.php:28
1314
+ msgid "Choose Query"
1315
+ msgstr ""
1316
+
1317
+ #: templates/admin/product-carousel.php:31
1318
+ msgid "Featured Products"
1319
+ msgstr ""
1320
+
1321
+ #: templates/admin/product-carousel.php:32
1322
+ msgid "Recent Products"
1323
+ msgstr ""
1324
+
1325
+ #: templates/admin/product-carousel.php:33
1326
+ msgid "Sale Products"
1327
+ msgstr ""
1328
+
1329
+ #: templates/admin/product-carousel.php:34
1330
+ msgid "Best-Selling Products"
1331
+ msgstr ""
1332
+
1333
+ #: templates/admin/product-carousel.php:35
1334
+ msgid "Top Rated Products"
1335
+ msgstr ""
1336
+
1337
+ #: templates/admin/product-carousel.php:36
1338
+ msgid "Product Categories List"
1339
+ msgstr ""
1340
+
1341
+ #: templates/admin/product-carousel.php:44
1342
+ msgid "Show products associated with selected categories."
1343
+ msgstr ""
1344
+
1345
+ #: templates/admin/product-carousel.php:51
1346
+ msgid "Show products associated with selected tags."
1347
+ msgstr ""
1348
+
1349
+ #: templates/admin/product-carousel.php:57
1350
+ msgid "Specific products"
1351
+ msgstr ""
1352
+
1353
+ #: templates/admin/product-carousel.php:58
1354
+ msgid "Select products that you want to show as slider. Select at least 5 products"
1355
+ msgstr ""
1356
+
1357
+ #: templates/admin/product-carousel.php:62
1358
+ msgid "Product per page"
1359
+ msgstr ""
1360
+
1361
+ #: templates/admin/product-carousel.php:64
1362
+ msgid "How many products you want to show on carousel slide."
1363
+ msgstr ""
1364
+
1365
+ #: templates/admin/product-carousel.php:68
1366
+ msgid "Show Title"
1367
+ msgstr ""
1368
+
1369
+ #: templates/admin/product-carousel.php:69
1370
+ msgid "Show Title."
1371
+ msgstr ""
1372
+
1373
+ #: templates/admin/product-carousel.php:70
1374
+ msgid "Check to show product title."
1375
+ msgstr ""
1376
+
1377
+ #: templates/admin/product-carousel.php:75
1378
+ msgid "Show Rating"
1379
+ msgstr ""
1380
+
1381
+ #: templates/admin/product-carousel.php:76
1382
+ msgid "Show Rating."
1383
+ msgstr ""
1384
+
1385
+ #: templates/admin/product-carousel.php:77
1386
+ msgid "Check to show product rating."
1387
+ msgstr ""
1388
+
1389
+ #: templates/admin/product-carousel.php:82
1390
+ msgid "Show Price"
1391
+ msgstr ""
1392
+
1393
+ #: templates/admin/product-carousel.php:83
1394
+ msgid "Show Price."
1395
+ msgstr ""
1396
+
1397
+ #: templates/admin/product-carousel.php:84
1398
+ msgid "Check to show product price."
1399
+ msgstr ""
1400
+
1401
+ #: templates/admin/product-carousel.php:89
1402
+ msgid "Show Cart Button"
1403
+ msgstr ""
1404
+
1405
+ #: templates/admin/product-carousel.php:90
1406
+ msgid "Show Cart Button."
1407
+ msgstr ""
1408
+
1409
+ #: templates/admin/product-carousel.php:91
1410
+ msgid "Check to show product add to cart button."
1411
+ msgstr ""
1412
+
1413
+ #: templates/admin/product-carousel.php:96
1414
+ #: templates/admin/product-carousel.php:97
1415
+ msgid "Show Sale Tag"
1416
+ msgstr ""
1417
+
1418
+ #: templates/admin/product-carousel.php:98
1419
+ msgid "Check to show product sale tag for onsale products."
1420
+ msgstr ""
1421
+
1422
+ #: templates/admin/product-carousel.php:103
1423
+ #: templates/admin/product-carousel.php:104
1424
+ msgid "Show Wishlist Button"
1425
+ msgstr ""
1426
+
1427
+ #: templates/admin/product-carousel.php:106
1428
+ msgid "Check to show wishlist button. This feature needs %s plugin to be installed."
1429
+ msgstr ""
1430
+
1431
+ #: templates/admin/product-carousel.php:106
1432
+ msgid "YITH WooCommerce Wishlist"
1433
+ msgstr ""
1434
+
1435
+ #: templates/admin/product-carousel.php:110
1436
+ #: templates/admin/product-carousel.php:111
1437
+ msgid "Show Quick View"
1438
+ msgstr ""
1439
+
1440
+ #: templates/admin/product-carousel.php:112
1441
+ msgid "Check to show quick view button."
1442
+ msgstr ""
1443
+
1444
+ #: templates/admin/product-carousel.php:118
1445
+ msgid "Title Color"
1446
+ msgstr ""
1447
+
1448
+ #: templates/admin/product-carousel.php:119
1449
+ msgid "Pick a color for product title. This color will also apply to sale tag and price."
1450
+ msgstr ""
1451
+
1452
+ #: templates/admin/product-carousel.php:125
1453
+ msgid "Button Background Color"
1454
+ msgstr ""
1455
+
1456
+ #: templates/admin/product-carousel.php:126
1457
+ msgid "Pick a color for button background color. This color will also apply to product rating."
1458
+ msgstr ""
1459
+
1460
+ #: templates/admin/product-carousel.php:133
1461
+ msgid "Pick a color for button text color."
1462
+ msgstr ""
1463
+
1464
+ #: templates/admin/video-carousel.php:10
1465
+ msgid "Video Settings"
1466
+ msgstr ""
1467
+
1468
+ #: templates/admin/video-carousel.php:17
1469
+ msgid "Video URLs"
1470
+ msgstr ""
1471
+
1472
+ #: templates/admin/video-carousel.php:20
1473
+ msgid "Only support youtube and vimeo. Enter video URL from youtube or vimeo separating each by comma"
1474
+ msgstr ""
1475
+
1476
+ #: templates/public/product-carousel-2.php:10
1477
+ #: templates/public/product-carousel.php:10
1478
+ msgid "Carousel Slider needs %s to work for products carousel."
1479
+ msgstr ""
1480
+
1481
+ #: templates/public/product-carousel-2.php:12
1482
+ #: templates/public/product-carousel.php:12
1483
+ msgid "WooCommerce"
1484
+ msgstr ""
modules/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Carousel Slider ===
2
  Contributors: sayful, stackonet, majeedraza
3
  Tags: woocommerce, shortcode, images, carousel, carousel slider, image carousel, product carousel, slider, owl carousel
4
- Requires at least: 4.8
5
- Tested up to: 5.6
6
- Requires PHP: 5.6
7
- Stable tag: 1.9.5
8
  License: GPLv3
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.txt
10
 
@@ -86,6 +86,17 @@ If you still need help. visit [WordPress codex](https://codex.wordpress.org/Mana
86
 
87
  == Changelog ==
88
 
 
 
 
 
 
 
 
 
 
 
 
89
  = version 1.9.5 - 2020-12-19 =
90
  * Dev - Update javaScript dependencies to latest version.
91
  * Dev - Tested with WordPress 5.6 and WooCommerce 4.8
1
  === Carousel Slider ===
2
  Contributors: sayful, stackonet, majeedraza
3
  Tags: woocommerce, shortcode, images, carousel, carousel slider, image carousel, product carousel, slider, owl carousel
4
+ Requires at least: 5.2
5
+ Tested up to: 5.8
6
+ Requires PHP: 7.0
7
+ Stable tag: 1.10.2
8
  License: GPLv3
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.txt
10
 
86
 
87
  == Changelog ==
88
 
89
+ = version 1.10.2 - 2021-08-01 =
90
+ * Dev - Tested with WordPress 5.8 and WooCommerce 5.5
91
+ * Fix - Fix video carousel image is not showing for non-lazy loading slider.
92
+
93
+ = version 1.10.1 - 2021-07-05 =
94
+ * Dev - Add custom update message for future major version
95
+
96
+ = version 1.10.0 - 2021-03-17 =
97
+ * Dev - Tested with WordPress 5.7 and WooCommerce 5.1
98
+ * Dev - Update core code with namespace
99
+
100
  = version 1.9.5 - 2020-12-19 =
101
  * Dev - Update javaScript dependencies to latest version.
102
  * Dev - Tested with WordPress 5.6 and WooCommerce 4.8
shortcodes/class-carousel-slider-deprecated-shortcode.php DELETED
@@ -1,193 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- die; // If this file is called directly, abort.
5
- }
6
-
7
- if ( ! class_exists( 'Carousel_Slider_Deprecated_Shortcode' ) ):
8
-
9
- class Carousel_Slider_Deprecated_Shortcode {
10
-
11
- protected static $instance = null;
12
-
13
- /**
14
- * Ensures only one instance of this class is loaded or can be loaded.
15
- *
16
- * @return Carousel_Slider_Deprecated_Shortcode
17
- */
18
- public static function init() {
19
- if ( is_null( self::$instance ) ) {
20
- self::$instance = new self();
21
- }
22
-
23
- return self::$instance;
24
- }
25
-
26
- /**
27
- * class constructor.
28
- */
29
- public function __construct() {
30
- // Deprecated since version 1.6.0
31
- add_shortcode( 'carousel', array( $this, 'carousel' ) );
32
- add_shortcode( 'item', array( $this, 'item' ) );
33
- }
34
-
35
- /**
36
- * A shortcode for rendering the carousel slide.
37
- *
38
- * @param array $atts Shortcode attributes.
39
- * @param string $content The text content for shortcode. Not used.
40
- *
41
- * @return string The shortcode output
42
- */
43
- public function carousel( $atts, $content = null ) {
44
- extract( shortcode_atts( array(
45
- 'id' => rand( 1, 10 ),
46
- 'items_desktop_large' => '4',
47
- 'items' => '4',
48
- 'items_desktop' => '4',
49
- 'items_desktop_small' => '3',
50
- 'items_tablet' => '2',
51
- 'items_mobile' => '1',
52
- 'auto_play' => 'true',
53
- 'stop_on_hover' => 'true',
54
- 'navigation' => 'true',
55
- 'pagination' => 'false',
56
- 'nav_color' => '#f1f1f1',
57
- 'nav_active_color' => '#4caf50',
58
- 'margin_right' => '10',
59
- 'inifnity_loop' => 'true',
60
- 'autoplay_timeout' => '5000',
61
- 'autoplay_speed' => '500',
62
- 'slide_by' => '1',
63
- ), $atts ) );
64
-
65
- ob_start();
66
-
67
- $options_array = array(
68
- 'id' => 'id-' . $id,
69
- 'class' => 'owl-carousel carousel-slider',
70
- // General
71
- 'data-slide-type' => 'image-carousel-url',
72
- 'data-margin' => $margin_right,
73
- 'data-slide-by' => $slide_by,
74
- 'data-loop' => $inifnity_loop,
75
- 'data-lazy-load' => 'false',
76
- 'data-stage-padding' => 0,
77
- 'data-auto-width' => 'false',
78
- // Navigation
79
- 'data-nav' => $navigation,
80
- 'data-dots' => $pagination,
81
- // Autoplay
82
- 'data-autoplay' => $auto_play,
83
- 'data-autoplay-timeout' => $autoplay_timeout,
84
- 'data-autoplay-speed' => $autoplay_speed,
85
- 'data-autoplay-hover-pause' => $stop_on_hover,
86
- // Responsive
87
- 'data-colums' => $items_desktop_large,
88
- 'data-colums-desktop' => $items,
89
- 'data-colums-small-desktop' => $items_desktop,
90
- 'data-colums-tablet' => $items_desktop_small,
91
- 'data-colums-small-tablet' => $items_tablet,
92
- 'data-colums-mobile' => $items_mobile,
93
- );
94
- ?>
95
- <style>
96
- #id-<?php echo $id; ?> .owl-dots .owl-dot span {
97
- background-color: <?php echo $nav_color; ?>
98
- }
99
-
100
- #id-<?php echo $id; ?> .owl-dots .owl-dot.active span,
101
- #id-<?php echo $id; ?> .owl-dots .owl-dot:hover span {
102
- background-color: <?php echo $nav_active_color; ?>
103
- }
104
-
105
- #id-<?php echo $id; ?> .carousel-slider-nav-icon {
106
- fill: <?php echo $nav_color; ?>;
107
- }
108
-
109
- #id-<?php echo $id; ?> .carousel-slider-nav-icon:hover {
110
- fill: <?php echo $nav_active_color; ?>;
111
- }
112
- </style>
113
- <?php
114
- if ( current_user_can( 'manage_options' ) ) {
115
- printf(
116
- '<div style="background-color: #ffdddd;border-left: 0.375rem solid #f44336; margin-bottom: 1rem;
117
- margin-top: 1rem;padding: 0.01rem 1rem;"><p><strong>%s</strong><br>%s<br>%s</p></div> ',
118
- esc_html__( 'Admin Only Notice!', 'carousel-slider' ),
119
- esc_html__( 'From carousel slider version 1.6.0, [carousel] and [item] shortcode has been deprecated.', 'carousel-slider' ),
120
- esc_html__( 'Both [carousel] and [item] shortcode will be removed on carousel slider version 2.0.0', 'carousel-slider' )
121
- );
122
- }
123
- ?>
124
- <div <?php echo $this->array_to_data( $options_array ); ?>>
125
- <?php echo do_shortcode( $content ); ?>
126
- </div><!-- .carousel-slider -->
127
- <?php
128
- $html = ob_get_contents();
129
- ob_end_clean();
130
-
131
- return $html;
132
-
133
- }
134
-
135
- /**
136
- * A shortcode for rendering the carousel slide.
137
- *
138
- * @param array $attributes Shortcode attributes.
139
- * @param string $content The text content for shortcode. Not used.
140
- *
141
- * @return string The shortcode output
142
- */
143
- public function item( $attributes, $content = null ) {
144
- extract( shortcode_atts( array(
145
- 'img_link' => '',
146
- 'href' => '',
147
- 'target' => '_self',
148
- ), $attributes ) );
149
-
150
- if ( ! $this->is_valid_url( $img_link ) ) {
151
- return '';
152
- }
153
-
154
- if ( $this->is_valid_url( $href ) ) {
155
-
156
- return sprintf( '<div><a target="%3$s" href="%2$s"><img src="%1$s"></a></div>', esc_url( $img_link ), esc_url( $href ), $target );
157
- } else {
158
-
159
- return sprintf( '<div><img src="%s"></div>', esc_url( $img_link ) );
160
- }
161
- }
162
-
163
- /**
164
- * Check if url is valid as per RFC 2396 Generic Syntax
165
- *
166
- * @param string $url
167
- *
168
- * @return boolean
169
- */
170
- private function is_valid_url( $url ) {
171
- return carousel_slider_is_url( $url );
172
- }
173
-
174
- /**
175
- * Convert array to html attributes
176
- *
177
- * @param array $array
178
- *
179
- * @return string
180
- */
181
- private function array_to_data( array $array ) {
182
- $array_map = array_map( function ( $key, $value ) {
183
- return sprintf( '%s="%s"', $key, esc_attr( $value ) );
184
-
185
- }, array_keys( $array ), array_values( $array ) );
186
-
187
- return join( " ", $array_map );
188
- }
189
- }
190
-
191
- endif;
192
-
193
- Carousel_Slider_Deprecated_Shortcode::init();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
shortcodes/class-carousel-slider-shortcode.php DELETED
@@ -1,384 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- die; // If this file is called directly, abort.
5
- }
6
-
7
- if ( ! class_exists( 'Carousel_Slider_Shortcode' ) ):
8
-
9
- class Carousel_Slider_Shortcode {
10
-
11
- /**
12
- * The instance of the class
13
- *
14
- * @var self
15
- */
16
- protected static $instance = null;
17
-
18
- /**
19
- * Ensures only one instance of this class is loaded or can be loaded.
20
- *
21
- * @return Carousel_Slider_Shortcode
22
- */
23
- public static function init() {
24
- if ( is_null( self::$instance ) ) {
25
- self::$instance = new self();
26
- }
27
-
28
- return self::$instance;
29
- }
30
-
31
- /**
32
- * CarouselSliderShortcode constructor.
33
- */
34
- public function __construct() {
35
- add_shortcode( 'carousel_slide', array( $this, 'carousel_slide' ) );
36
- }
37
-
38
- /**
39
- * A shortcode for rendering the carousel slide.
40
- *
41
- * @param array $attributes Shortcode attributes.
42
- *
43
- * @return string The shortcode output
44
- */
45
- public function carousel_slide( $attributes ) {
46
- if ( empty( $attributes['id'] ) ) {
47
- return '';
48
- }
49
-
50
- $id = intval( $attributes['id'] );
51
-
52
- $slide_type = get_post_meta( $id, '_slide_type', true );
53
- $slide_type = in_array( $slide_type, carousel_slider_slide_type() ) ? $slide_type : 'image-carousel';
54
-
55
- if ( $slide_type == 'post-carousel' ) {
56
- ob_start();
57
- require CAROUSEL_SLIDER_TEMPLATES . '/public/post-carousel.php';
58
- $html = ob_get_contents();
59
- ob_end_clean();
60
-
61
- return apply_filters( 'carousel_slider_posts_carousel', $html, $id );
62
- }
63
-
64
- if ( $slide_type == 'video-carousel' ) {
65
- wp_enqueue_script( 'magnific-popup' );
66
- $_video_urls = array_filter( explode( ',', $this->get_meta( $id, '_video_url' ) ) );
67
- $urls = $this->get_video_url( $_video_urls );
68
-
69
- ob_start();
70
- require CAROUSEL_SLIDER_TEMPLATES . '/public/video-carousel.php';
71
- $html = ob_get_contents();
72
- ob_end_clean();
73
-
74
- return apply_filters( 'carousel_slider_videos_carousel', $html, $id );
75
- }
76
-
77
- if ( $slide_type == 'image-carousel-url' ) {
78
- ob_start();
79
- require CAROUSEL_SLIDER_TEMPLATES . '/public/images-carousel-url.php';
80
- $html = ob_get_contents();
81
- ob_end_clean();
82
-
83
- return apply_filters( 'carousel_slider_link_images_carousel', $html, $id );
84
- }
85
-
86
- if ( $slide_type == 'image-carousel' ) {
87
- ob_start();
88
- require CAROUSEL_SLIDER_TEMPLATES . '/public/images-carousel.php';
89
- $html = ob_get_contents();
90
- ob_end_clean();
91
-
92
- return apply_filters( 'carousel_slider_gallery_images_carousel', $html, $id );
93
- }
94
-
95
- if ( $slide_type == 'product-carousel' ) {
96
-
97
- $query_type = get_post_meta( $id, '_product_query_type', true );
98
- $query_type = empty( $query_type ) ? 'query_product' : $query_type;
99
- // Type mistake
100
- $query_type = ( 'query_porduct' == $query_type ) ? 'query_product' : $query_type;
101
- $product_query = get_post_meta( $id, '_product_query', true );
102
-
103
- if ( $query_type == 'query_product' && $product_query == 'product_categories_list' ) {
104
- ob_start();
105
-
106
- echo $this->product_categories( $id );
107
- $html = ob_get_contents();
108
- ob_end_clean();
109
-
110
- return apply_filters( 'carousel_slider_product_carousel', $html, $id );
111
- }
112
-
113
- ob_start();
114
- require CAROUSEL_SLIDER_TEMPLATES . '/public/product-carousel.php';
115
- $html = ob_get_contents();
116
- ob_end_clean();
117
-
118
- return apply_filters( 'carousel_slider_product_carousel', $html, $id );
119
- }
120
-
121
- if ( $slide_type == 'hero-banner-slider' ) {
122
-
123
- ob_start();
124
- require CAROUSEL_SLIDER_TEMPLATES . '/public/hero-banner-slider.php';
125
- $html = ob_get_contents();
126
- ob_end_clean();
127
-
128
- return apply_filters( 'Carousel_Slider_Hero_Carousel', $html, $id );
129
- }
130
-
131
- return '';
132
- }
133
-
134
- /**
135
- * Generate carousel options for slider
136
- *
137
- * @param $id
138
- *
139
- * @return array
140
- */
141
- private function carousel_options( $id ) {
142
- $_nav_button = get_post_meta( $id, '_nav_button', true );
143
- $_arrow_position = get_post_meta( $id, '_arrow_position', true );
144
- $_dot_nav = get_post_meta( $id, '_dot_nav', true );
145
- $_bullet_position = get_post_meta( $id, '_bullet_position', true );
146
- $_bullet_shape = get_post_meta( $id, '_bullet_shape', true );
147
-
148
- $class = 'owl-carousel carousel-slider';
149
-
150
- // Arrows position
151
- if ( $_arrow_position == 'inside' ) {
152
- $class .= ' arrows-inside';
153
- } else {
154
- $class .= ' arrows-outside';
155
- }
156
-
157
- // Arrows visibility
158
- if ( $_nav_button == 'always' ) {
159
- $class .= ' arrows-visible-always';
160
- } elseif ( $_nav_button == 'off' ) {
161
- $class .= ' arrows-hidden';
162
- } else {
163
- $class .= ' arrows-visible-hover';
164
- }
165
-
166
- // Dots visibility
167
- if ( $_dot_nav == 'on' ) {
168
- $class .= ' dots-visible-always';
169
- } elseif ( $_dot_nav == 'off' ) {
170
- $class .= ' dots-hidden';
171
- } else {
172
- $class .= ' dots-visible-hover';
173
- }
174
-
175
- // Dots position
176
- if ( $_bullet_position == 'left' ) {
177
- $class .= ' dots-left';
178
- } elseif ( $_bullet_position == 'right' ) {
179
- $class .= ' dots-right';
180
- } else {
181
- $class .= ' dots-center';
182
- }
183
-
184
- // Dots shape
185
- if ( $_bullet_shape == 'circle' ) {
186
- $class .= ' dots-circle';
187
- } else {
188
- $class .= ' dots-square';
189
- }
190
-
191
- $_dot_nav = ( get_post_meta( $id, '_dot_nav', true ) != 'off' );
192
- $_nav_button = ( get_post_meta( $id, '_nav_button', true ) != 'off' );
193
-
194
- $options_array = array(
195
- 'id' => 'id-' . $id,
196
- 'class' => $class,
197
- // General
198
- 'data-slide-type' => $this->get_meta( $id, '_slide_type', 'image-carousel' ),
199
- 'data-margin' => $this->get_meta( $id, '_margin_right', '10' ),
200
- 'data-slide-by' => $this->get_meta( $id, '_slide_by', '1' ),
201
- 'data-loop' => $this->get_meta( $id, '_inifnity_loop', 'true' ),
202
- 'data-lazy-load' => $this->get_meta( $id, '_lazy_load_image', 'false' ),
203
- 'data-stage-padding' => $this->get_meta( $id, '_stage_padding', '0' ),
204
- 'data-auto-width' => $this->get_meta( $id, '_auto_width', 'false' ),
205
- // Navigation
206
- 'data-dots' => $_dot_nav,
207
- 'data-nav' => $_nav_button,
208
- // Autoplay
209
- 'data-autoplay' => $this->get_meta( $id, '_autoplay', 'true' ),
210
- 'data-autoplay-timeout' => $this->get_meta( $id, '_autoplay_timeout', '5000' ),
211
- 'data-autoplay-speed' => $this->get_meta( $id, '_autoplay_speed', '500' ),
212
- 'data-autoplay-hover-pause' => $this->get_meta( $id, '_autoplay_pause', 'false' ),
213
- // Responsive
214
- 'data-colums' => $this->get_meta( $id, '_items', '4' ),
215
- 'data-colums-desktop' => $this->get_meta( $id, '_items_desktop', '4' ),
216
- 'data-colums-small-desktop' => $this->get_meta( $id, '_items_small_desktop', '4' ),
217
- 'data-colums-tablet' => $this->get_meta( $id, '_items_portrait_tablet', '3' ),
218
- 'data-colums-small-tablet' => $this->get_meta( $id, '_items_small_portrait_tablet', '2' ),
219
- 'data-colums-mobile' => $this->get_meta( $id, '_items_portrait_mobile', '1' ),
220
- );
221
-
222
- return $this->array_to_data( $options_array );
223
- }
224
-
225
- /**
226
- * Get post meta by id and key
227
- *
228
- * @param $id
229
- * @param $key
230
- * @param null $default
231
- *
232
- * @return string
233
- */
234
- public function get_meta( $id, $key, $default = null ) {
235
- return carousel_slider_get_meta( $id, $key, $default );
236
- }
237
-
238
- /**
239
- * Convert array to html data attribute
240
- *
241
- * @param $array
242
- *
243
- * @return array
244
- */
245
- public function array_to_data( $array ) {
246
- return carousel_slider_array_to_attribute( $array );
247
- }
248
-
249
- /**
250
- * Get product categories list carousel
251
- *
252
- * @param int $id
253
- *
254
- * @return string
255
- */
256
- private function product_categories( $id = 0 ) {
257
-
258
- $product_carousel = new Carousel_Slider_Product();
259
- $product_categories = $product_carousel->product_categories();
260
-
261
- $options = $this->carousel_options( $id );
262
- $options = join( " ", $options );
263
-
264
- ob_start();
265
- if ( $product_categories ) {
266
- echo '<div class="carousel-slider-outer carousel-slider-outer-products carousel-slider-outer-' . $id . '">';
267
- carousel_slider_inline_style( $id );
268
- echo '<div ' . $options . '>';
269
-
270
-
271
- foreach ( $product_categories as $category ) {
272
- echo '<div class="product carousel-slider__product">';
273
- do_action( 'woocommerce_before_subcategory', $category );
274
- do_action( 'woocommerce_before_subcategory_title', $category );
275
- do_action( 'woocommerce_shop_loop_subcategory_title', $category );
276
- do_action( 'woocommerce_after_subcategory_title', $category );
277
- do_action( 'woocommerce_after_subcategory', $category );
278
- echo '</div>';
279
- }
280
-
281
- echo '</div>';
282
- echo '</div>';
283
- }
284
-
285
- $html = ob_get_contents();
286
- ob_end_clean();
287
-
288
- return $html;
289
- }
290
-
291
- /**
292
- * Get Youtube video ID from URL
293
- *
294
- * @param string $url
295
- *
296
- * @return mixed Youtube video ID or FALSE if not found
297
- */
298
- private function get_youtube_id_from_url( $url ) {
299
- $parts = parse_url( $url );
300
- if ( isset( $parts['query'] ) ) {
301
- parse_str( $parts['query'], $qs );
302
- if ( isset( $qs['v'] ) ) {
303
- return $qs['v'];
304
- } elseif ( isset( $qs['vi'] ) ) {
305
- return $qs['vi'];
306
- }
307
- }
308
- if ( isset( $parts['path'] ) ) {
309
- $path = explode( '/', trim( $parts['path'], '/' ) );
310
-
311
- return $path[ count( $path ) - 1 ];
312
- }
313
-
314
- return false;
315
- }
316
-
317
- /**
318
- * Get Vimeo video ID from URL
319
- *
320
- * @param string $url
321
- *
322
- * @return mixed Vimeo video ID or FALSE if not found
323
- */
324
- private function get_vimeo_id_from_url( $url ) {
325
- $parts = parse_url( $url );
326
- if ( isset( $parts['path'] ) ) {
327
- $path = explode( '/', trim( $parts['path'], '/' ) );
328
-
329
- return $path[ count( $path ) - 1 ];
330
- }
331
-
332
- return false;
333
- }
334
-
335
- /**
336
- * @param $video_urls
337
- *
338
- * @return array
339
- */
340
- public function get_video_url( array $video_urls ) {
341
- $_url = array();
342
- foreach ( $video_urls as $video_url ) {
343
- if ( ! filter_var( $video_url, FILTER_VALIDATE_URL ) ) {
344
- continue;
345
- }
346
- $provider = '';
347
- $video_id = '';
348
- $thumbnail = '';
349
- if ( false !== strpos( $video_url, 'youtube.com' ) ) {
350
- $provider = 'youtube';
351
- $video_id = $this->get_youtube_id_from_url( $video_url );
352
- $thumbnail = array(
353
- 'large' => 'https://img.youtube.com/vi/' . $video_id . '/hqdefault.jpg',
354
- 'medium' => 'https://img.youtube.com/vi/' . $video_id . '/mqdefault.jpg',
355
- 'small' => 'https://img.youtube.com/vi/' . $video_id . '/sddefault.jpg',
356
- );
357
-
358
- } elseif ( false !== strpos( $video_url, 'vimeo.com' ) ) {
359
- $provider = 'vimeo';
360
- $video_id = $this->get_vimeo_id_from_url( $video_url );
361
- $response = wp_remote_get( "https://vimeo.com/api/v2/video/$video_id.json" );
362
- $thumbnail = json_decode( wp_remote_retrieve_body( $response ), true );
363
- $thumbnail = array(
364
- 'large' => isset( $thumbnail[0]['thumbnail_large'] ) ? $thumbnail[0]['thumbnail_large'] : null,
365
- 'medium' => isset( $thumbnail[0]['thumbnail_medium'] ) ? $thumbnail[0]['thumbnail_medium'] : null,
366
- 'small' => isset( $thumbnail[0]['thumbnail_small'] ) ? $thumbnail[0]['thumbnail_small'] : null,
367
- );
368
- }
369
-
370
- $_url[] = array(
371
- 'provider' => $provider,
372
- 'url' => $video_url,
373
- 'video_id' => $video_id,
374
- 'thumbnail' => $thumbnail,
375
- );
376
- }
377
-
378
- return $_url;
379
- }
380
- }
381
-
382
- endif;
383
-
384
- Carousel_Slider_Shortcode::init();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
shortcodes/index.php DELETED
@@ -1,2 +0,0 @@
1
- <?php
2
- // Code is Poetry
 
 
templates/public/video-carousel.php CHANGED
@@ -7,24 +7,29 @@ if ( ! defined( 'WPINC' ) ) {
7
  if ( count( $urls ) < 1 ) {
8
  return;
9
  }
 
10
  ?>
11
  <div class="carousel-slider-outer carousel-slider-outer-videos carousel-slider-outer-<?php echo $id; ?>">
12
  <?php carousel_slider_inline_style( $id ); ?>
13
- <div <?php echo join( " ", $this->carousel_options( $id ) ); ?>>
14
  <?php
15
  foreach ( $urls as $url ) {
16
  ?>
17
- <div class="carousel-slider-item-video">
18
- <div class="carousel-slider-video-wrapper">
19
- <a class="magnific-popup" href="<?php echo $url['url']; ?>">
20
- <div class="carousel-slider-video-play-icon"></div>
21
- <div class="carousel-slider-video-overlay"></div>
22
- <img class="owl-lazy" data-src="<?php echo $url['thumbnail']['large']; ?>"/>
23
- </a>
24
- </div>
25
- </div>
 
 
 
 
26
  <?php
27
  }
28
  ?>
29
- </div>
30
  </div>
7
  if ( count( $urls ) < 1 ) {
8
  return;
9
  }
10
+ $_lazy_load_image = get_post_meta( $id, '_lazy_load_image', true );
11
  ?>
12
  <div class="carousel-slider-outer carousel-slider-outer-videos carousel-slider-outer-<?php echo $id; ?>">
13
  <?php carousel_slider_inline_style( $id ); ?>
14
+ <div <?php echo join( " ", $this->carousel_options( $id ) ); ?>>
15
  <?php
16
  foreach ( $urls as $url ) {
17
  ?>
18
+ <div class="carousel-slider-item-video">
19
+ <div class="carousel-slider-video-wrapper">
20
+ <a class="magnific-popup" href="<?php echo $url['url']; ?>">
21
+ <div class="carousel-slider-video-play-icon"></div>
22
+ <div class="carousel-slider-video-overlay"></div>
23
+ <?php if ( $_lazy_load_image == 'on' ) { ?>
24
+ <img class="owl-lazy" data-src="<?php echo $url['thumbnail']['large']; ?>" alt=""/>
25
+ <?php } else { ?>
26
+ <img src="<?php echo $url['thumbnail']['large']; ?>" alt=""/>
27
+ <?php } ?>
28
+ </a>
29
+ </div>
30
+ </div>
31
  <?php
32
  }
33
  ?>
34
+ </div>
35
  </div>
widgets/index.php DELETED
@@ -1,2 +0,0 @@
1
- <?php
2
- // Code is Poetry