├── inc ├── demo-data │ ├── screen-image.jpg │ ├── css │ │ └── demo-import.css │ ├── hus-customizer.dat │ ├── hus-widgets-demo.wie │ └── demo-import.php ├── elementor-widgets │ ├── assets │ │ ├── css │ │ │ ├── elementor-edit.css │ │ │ ├── utility.css │ │ │ ├── owl.carousel.min.css │ │ │ └── magnific-popup.css │ │ ├── fonts │ │ │ └── themify-icon │ │ │ │ └── fonts │ │ │ │ ├── themify.eot │ │ │ │ ├── themify.ttf │ │ │ │ └── themify.woff │ │ └── js │ │ │ ├── jquery.counterup.min.js │ │ │ ├── map-active.js │ │ │ ├── progress-loader-canvas.js │ │ │ ├── jquery.counterup.js │ │ │ ├── imagesLoaded.js │ │ │ ├── barfiller.js │ │ │ ├── waypoints.js │ │ │ ├── hus-companion-main.js │ │ │ └── jquery.youtubebackground.js │ └── widgets │ │ ├── blog.php │ │ ├── certificates.php │ │ ├── contact.php │ │ ├── quotation.php │ │ ├── testimonial.php │ │ ├── hero-section.php │ │ ├── apartments.php │ │ ├── about-area.php │ │ └── facilities.php ├── hus-metabox.php ├── sidebar-widgets │ ├── instagram.php │ ├── blog-widget.php │ ├── newsletter-widget.php │ ├── social-links.php │ ├── about-widget.php │ └── contact-info.php └── instagram-api.php ├── js ├── common.js └── loadmore-ajax.js ├── hus-init.php ├── hus-companion.php └── readme.txt /inc/demo-data/screen-image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/hus-companion/main/inc/demo-data/screen-image.jpg -------------------------------------------------------------------------------- /inc/elementor-widgets/assets/css/elementor-edit.css: -------------------------------------------------------------------------------- 1 | .elementor-choices-label i { 2 | font-size: 18px !important; 3 | padding: 5px 0; 4 | } -------------------------------------------------------------------------------- /inc/elementor-widgets/assets/fonts/themify-icon/fonts/themify.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/hus-companion/main/inc/elementor-widgets/assets/fonts/themify-icon/fonts/themify.eot -------------------------------------------------------------------------------- /inc/elementor-widgets/assets/fonts/themify-icon/fonts/themify.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/hus-companion/main/inc/elementor-widgets/assets/fonts/themify-icon/fonts/themify.ttf -------------------------------------------------------------------------------- /inc/elementor-widgets/assets/fonts/themify-icon/fonts/themify.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/hus-companion/main/inc/elementor-widgets/assets/fonts/themify-icon/fonts/themify.woff -------------------------------------------------------------------------------- /inc/demo-data/css/demo-import.css: -------------------------------------------------------------------------------- 1 | .ocdi__demo-import-notice:not(:empty) { 2 | background-color: transparent !important; 3 | border-left: 0px !important; 4 | box-shadow: none !important; 5 | padding: 0px !important; 6 | } 7 | .ocdi__demo-import-notice img { 8 | border: 4px solid #dbe3ea; 9 | width: auto; 10 | } 11 | .about-wrap .ocdi__demo-import-notice img { 12 | width: auto; 13 | } 14 | .about-wrap img { 15 | width: auto; 16 | } -------------------------------------------------------------------------------- /js/common.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | "use strict"; 3 | /*------------------------------------- 4 | Instagram Photos 5 | -------------------------------------*/ 6 | function cp_instagram_photos() { 7 | $('.cp-instagram-photos').each(function(){ 8 | $.instagramFeed({ 9 | 'username': $(this).data('username'), 10 | 'container': $(this), 11 | 'display_profile': false, 12 | 'display_biography': false, 13 | 'items': $(this).data('items'), 14 | 'margin': 0 15 | }); 16 | console.log( $(this) ); 17 | }); 18 | 19 | } 20 | cp_instagram_photos(); 21 | })(jQuery); -------------------------------------------------------------------------------- /inc/elementor-widgets/assets/css/utility.css: -------------------------------------------------------------------------------- 1 | /* ------------------------- 2 | :: utility Class 3 | ---------------------------- */ 4 | .hus-pt-100 { 5 | padding-top: 100px; 6 | } 7 | .hus-pt-80 { 8 | padding-top: 80px; 9 | } 10 | .hus-pt-70 { 11 | padding-top: 70px; 12 | } 13 | .hus-pt-60 { 14 | padding-top: 60px; 15 | } 16 | .hus-pt-50 { 17 | padding-top: 50px; 18 | } 19 | .hus-pt-30 { 20 | padding-top: 30px; 21 | } 22 | .hus-pb-100 { 23 | padding-bottom: 100px; 24 | } 25 | .hus-pb-80 { 26 | padding-bottom: 80px; 27 | } 28 | .hus-pb-70 { 29 | padding-bottom: 70px; 30 | } 31 | .hus-pb-60 { 32 | padding-bottom: 60px; 33 | } 34 | .hus-pb-50 { 35 | padding-bottom: 50px; 36 | } 37 | .hus-pb-30 { 38 | padding-bottom: 30px; 39 | } 40 | -------------------------------------------------------------------------------- /hus-init.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /inc/elementor-widgets/assets/js/jquery.counterup.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jquery.counterup.js 1.0 3 | * 4 | * Copyright 2013, Benjamin Intal http://gambit.ph @bfintal 5 | * Released under the GPL v2 License 6 | * 7 | * Date: Nov 26, 2013 8 | */(function(e){"use strict";e.fn.counterUp=function(t){var n=e.extend({time:400,delay:10},t);return this.each(function(){var t=e(this),r=n,i=function(){var e=[],n=r.time/r.delay,i=t.text(),s=/[0-9]+,[0-9]+/.test(i);i=i.replace(/,/g,"");var o=/^[0-9]+$/.test(i),u=/^[0-9]+\.[0-9]+$/.test(i),a=u?(i.split(".")[1]||[]).length:0;for(var f=n;f>=1;f--){var l=parseInt(i/n*f);u&&(l=parseFloat(i/n*f).toFixed(a));if(s)while(/(\d+)(\d{3})/.test(l.toString()))l=l.toString().replace(/(\d+)(\d{3})/,"$1,$2");e.unshift(l)}t.data("counterup-nums",e);t.text("0");var c=function(){t.text(t.data("counterup-nums").shift());if(t.data("counterup-nums").length)setTimeout(t.data("counterup-func"),r.delay);else{delete t.data("counterup-nums");t.data("counterup-nums",null);t.data("counterup-func",null)}};t.data("counterup-func",c);setTimeout(t.data("counterup-func"),r.delay)};t.waypoint(i,{offset:"100%",triggerOnce:!0})})}})(jQuery); -------------------------------------------------------------------------------- /inc/elementor-widgets/assets/js/map-active.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | 'use strict'; 3 | 4 | var map, 5 | $lat = $('[data-lat]').data('lat'), 6 | $lng = $('[data-lng]').data('lng'), 7 | $address = $('[data-address]').data('address'); 8 | 9 | var latlng = new google.maps.LatLng( parseFloat($lat), parseFloat($lng)); 10 | var stylez = [{ 11 | featureType: "all", 12 | elementType: "all", 13 | stylers: [{ 14 | saturation: -10 15 | }] 16 | }]; 17 | var mapOptions = { 18 | zoom: 15, 19 | center: latlng, 20 | scrollwheel: false, 21 | scaleControl: false, 22 | disableDefaultUI: true, 23 | mapTypeControlOptions: { 24 | mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'gMap'] 25 | } 26 | }; 27 | map = new google.maps.Map(document.getElementById("googleMap"), mapOptions); 28 | var geocoder_map = new google.maps.Geocoder(); 29 | geocoder_map.geocode({ 30 | 'address': $address 31 | }, function (results, status) { 32 | if (status == google.maps.GeocoderStatus.OK) { 33 | map.setCenter(results[0].geometry.location); 34 | var marker = new google.maps.Marker({ 35 | map: map, 36 | position: map.getCenter() 37 | }); 38 | } else { 39 | alert("Geocode was not successful for the following reason: " + status); 40 | } 41 | }); 42 | var mapType = new google.maps.StyledMapType(stylez, { 43 | name: "Grayscale" 44 | }); 45 | map.mapTypes.set('gMap', mapType); 46 | map.setMapTypeId('gMap'); 47 | 48 | })(jQuery); -------------------------------------------------------------------------------- /inc/demo-data/hus-customizer.dat: -------------------------------------------------------------------------------- 1 | a:4:{s:8:"template";s:3:"hus";s:4:"mods";a:24:{i:0;b:0;s:18:"custom_css_post_id";i:-1;s:18:"nav_menu_locations";a:2:{s:12:"primary-menu";i:15;s:15:"important-links";i:14;}s:25:"hus_social_profile_toggle";b:1;s:19:"hus_social_profiles";a:4:{i:0;a:4:{s:17:"social_link_title";s:9:"Facebook ";s:10:"social_url";s:1:"#";s:11:"social_icon";s:14:"fa fa-facebook";s:5:"index";i:0;}i:1;a:4:{s:17:"social_link_title";s:11:"Google Plus";s:10:"social_url";s:1:"#";s:11:"social_icon";s:17:"fa fa-google-plus";s:5:"index";i:1;}i:2;a:4:{s:17:"social_link_title";s:7:"Twitter";s:10:"social_url";s:1:"#";s:11:"social_icon";s:13:"fa fa-twitter";s:5:"index";i:2;}i:3;a:4:{s:17:"social_link_title";s:9:"Instagram";s:10:"social_url";s:1:"#";s:11:"social_icon";s:15:"fa fa-instagram";s:5:"index";i:3;}}s:23:"hus_header_top_btn_text";s:5:"Login";s:22:"hus_header_top_btn_url";s:0:"";s:23:"hus_header_phone_number";s:20:"Call us +001 325 589";s:13:"hus_blog_meta";b:1;s:12:"hus_like_btn";b:1;s:14:"hus_blog_share";b:1;s:24:"hus_footer_widget_toggle";b:1;s:31:"hus_footer_widget_heading_color";s:7:"#ffffff";s:28:"hus_footer_widget_text_color";s:7:"#a3a3a3";s:30:"hus_footer_widget_anchor_color";s:7:"#9e9e9e";s:36:"hus_footer_widget_anchor_hover_color";s:7:"#ffffff";s:19:"hus_header_bg_color";s:7:"#ffffff";s:21:"hus_header_menu_color";s:7:"#131313";s:27:"hus_header_menu_hover_color";s:7:"#808080";s:23:"hus_dropdown_menu_color";s:7:"#131313";s:29:"hus_dropdown_menu_hover_color";s:7:"#808080";s:21:"hus_fof_textone_color";s:7:"#000000";s:21:"hus_fof_texttwo_color";s:7:"#656565";s:16:"hus_fof_bg_color";s:7:"#ffffff";}s:7:"options";a:2:{s:9:"site_icon";s:1:"0";s:23:"nav_menus_created_posts";a:0:{}}s:6:"wp_css";s:0:"";} -------------------------------------------------------------------------------- /js/loadmore-ajax.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | 'use strict'; 3 | 4 | // Portfolio load more button Ajax 5 | 6 | var $loadbutton = $('.loadAjax'); 7 | 8 | if ($loadbutton.length) { 9 | 10 | var postNumber = portfolioloadajax.postNumber, 11 | Incr = 0; 12 | // 13 | $loadbutton.on('click', function () { 14 | 15 | 16 | Incr = Incr + parseInt(postNumber); 17 | 18 | var $button = $(this), 19 | $data; 20 | 21 | $data = { 22 | 'action': 'hus_portfolio_ajax', 23 | 'postNumber': postNumber, 24 | 'postIncrNumber': Incr, 25 | 'elsettings': portfolioloadajax.elsettings 26 | }; 27 | 28 | $.ajax({ 29 | 30 | url: portfolioloadajax.action_url, 31 | data: $data, 32 | type: 'POST', 33 | 34 | 35 | success: function (data) { 36 | 37 | $('.hus-portfolio-load').html(data); 38 | 39 | var $container = $('.hus-portfolio'); 40 | 41 | $container.isotope('reloadItems').isotope({ 42 | itemSelector: '.single_gallery_item', 43 | percentPosition: true, 44 | masonry: { 45 | columnWidth: '.single_gallery_item' 46 | } 47 | }); 48 | 49 | var loaditems = parseInt(Incr) + parseInt(postNumber); 50 | 51 | if (portfolioloadajax.totalitems == loaditems) { 52 | $button.hide(); 53 | } 54 | 55 | } 56 | 57 | }); 58 | 59 | return false; 60 | 61 | }); 62 | 63 | 64 | } 65 | 66 | 67 | })(jQuery); -------------------------------------------------------------------------------- /inc/demo-data/hus-widgets-demo.wie: -------------------------------------------------------------------------------- 1 | {"sidebar-1":{"block-2":{"content":""},"block-3":{"content":"

Recent Posts<\/h2><\/div>"},"block-4":{"content":"

Recent Comments<\/h2><\/div>"},"block-5":{"content":"

Archives<\/h2><\/div>"},"block-6":{"content":"

Categories<\/h2><\/div>"}},"hus-post-sidebar":{"search-1":{"title":""},"categories-1":{"title":"Category","count":1,"hierarchical":0,"dropdown":0},"hus_blog_widget-1":{"sectiontitle":"Recent Post","postnumber":"4","style":"1"},"tag_cloud-1":{"title":"Tag Clouds","count":0,"taxonomy":"post_tag"},"hus_newsletter-1":{"title":"Newsletter","actionurl":"https:\/\/spondonit.us12.list-manage.com\/subscribe\/post?u=1462626880ade1ac87bd9c93a&id=92a4423d01","desc":""}},"footer-2":{"hus_contactinfo_widget-1":{"title":"Contact Info","addressicon":"","address":"Address :Your address goes here, your demo address.\r\n
Phone : +8880 44338899\r\n
Email : info@colorlib.com","pnumbericon":"","pnumber":"","emailicon":"","email":""}},"footer-3":{"nav_menu-1":{"title":"Important Link","nav_menu":"14"}},"footer-4":{"hus_newsletter-2":{"title":"Newsletter","actionurl":"https:\/\/spondonit.us12.list-manage.com\/subscribe\/post?u=1462626880ade1ac87bd9c93a&id=92a4423d01","desc":"Heaven fruitful doesn't over lesser in days. Appear creeping seasons"}}} -------------------------------------------------------------------------------- /inc/hus-metabox.php: -------------------------------------------------------------------------------- 1 | 'listing_metaboxes', 7 | 'title' => esc_html__( 'Other Options', 'hus-companion' ), 8 | 'post_types'=> array( 'listing' ), 9 | 'priority' => 'high', 10 | 'autosave' => 'false', 11 | 'fields' => array( 12 | array( 13 | 'id' => $hus_prefix . 'listing_address', 14 | 'type' => 'text', 15 | 'required' => true, 16 | 'name' => esc_html__( 'Address', 'hus-companion' ), 17 | 'placeholder' => esc_html__( 'Detail Address for the Listing.', 'hus-companion' ), 18 | ), 19 | // array( 20 | // 'id' => $hus_prefix . 'listing_country', 21 | // 'type' => 'text', 22 | // 'required' => true, 23 | // 'name' => esc_html__( 'Country', 'hus-companion' ), 24 | // 'placeholder' => esc_html__( 'Country for the Listing.', 'hus-companion' ), 25 | // ), 26 | array( 27 | 'id' => $hus_prefix . 'listing_map', 28 | 'type' => 'osm', 29 | 'required' => true, 30 | 'name' => esc_html__( 'Location', 'hus-companion' ), 31 | 'std' => '-6.233406,-35.049906,15', 32 | 'address_field' => $hus_prefix . 'listing_address', 33 | ), 34 | array( 35 | 'id' => $hus_prefix . 'listing_price', 36 | 'type' => 'text', 37 | 'required' => true, 38 | 'name' => esc_html__( 'Price', 'hus-companion' ), 39 | 'placeholder' => esc_html__( 'Ex: 1000000', 'hus-companion' ), 40 | ), 41 | array( 42 | 'id' => $hus_prefix . 'phone_number', 43 | 'type' => 'text', 44 | 'name' => esc_html__( 'Phone', 'hus-companion' ), 45 | 'placeholder' => esc_html__( 'Ex: 012 345 678', 'hus-companion' ), 46 | ), 47 | array( 48 | 'id' => $hus_prefix . 'listing_email', 49 | 'type' => 'text', 50 | 'name' => esc_html__( 'Listing Email', 'hus-companion' ), 51 | ), 52 | array( 53 | 'id' => $hus_prefix . 'listing_area', 54 | 'type' => 'text', 55 | 'name' => esc_html__( 'Area (Square Feet)', 'hus-companion' ), 56 | 'placeholder' => esc_html__( 'Ex: 1500', 'hus-companion' ), 57 | ), 58 | ), 59 | ); 60 | 61 | 62 | return $meta_boxes; 63 | } 64 | add_filter( 'rwmb_meta_boxes', 'hus_page_metabox' ); 65 | -------------------------------------------------------------------------------- /hus-companion.php: -------------------------------------------------------------------------------- 1 | parent(); 58 | 59 | 60 | 61 | if( ( 'Hus' == $current_theme->get( 'Name' ) ) || ( $is_parent && 'Hus' == $is_parent->get( 'Name' ) ) ){ 62 | require_once HUS_COMPANION_DIR_PATH . 'hus-init.php'; 63 | }else{ 64 | 65 | add_action( 'admin_notices', 'hus_companion_admin_notice', 99 ); 66 | function hus_companion_admin_notice() { 67 | $url = 'https://demo.colorlib.com/hus/'; 68 | ?> 69 |
70 |

Hus Companion plugin you have to also install the %1$sHus Theme%2$s', 'hus-companion' ), '', '' ); ?>

71 |
72 | -------------------------------------------------------------------------------- /inc/elementor-widgets/assets/css/owl.carousel.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.2.1 3 | * Copyright 2013-2017 David Deutsch 4 | * Licensed under () 5 | */ 6 | .owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%} -------------------------------------------------------------------------------- /inc/elementor-widgets/assets/js/progress-loader-canvas.js: -------------------------------------------------------------------------------- 1 | /* Credits: 2 | * https://www.developphp.com/video/JavaScript/Circular-Progress-Loader-Canvas-JavaScript-Programming-Tutorial 3 | */ 4 | 5 | (function() { 6 | var Progress = function( element ) { 7 | this.context = element.getContext( "2d" ); 8 | this.refElement = element.parentNode; 9 | this.loaded = 0; 10 | this.start = 4.72; 11 | this.width = this.context.canvas.width; 12 | this.height = this.context.canvas.height; 13 | this.total = parseInt( this.refElement.dataset.percent, 10 ); 14 | this.timer = null; 15 | this.diff = 0; 16 | this.init(); 17 | }; 18 | Progress.prototype = { 19 | init: function() { 20 | var self = this; 21 | self.timer = setInterval(function() { 22 | self.run(); 23 | }, 25); 24 | }, 25 | run: function() { 26 | var self = this; 27 | self.diff = ( ( self.loaded / 100 ) * Math.PI * 2 * 10 ).toFixed( 2 ); 28 | self.context.clearRect( 0, 0, self.width, self.height ); 29 | self.context.lineWidth = 5; 30 | self.context.fillStyle = "#000"; 31 | self.context.strokeStyle = "#4a7aec"; 32 | self.context.textAlign = "center"; 33 | self.context.fillText( self.loaded + "%", self.width * .5, self.height * .5 + 2, self.width ); 34 | self.context.beginPath(); 35 | self.context.arc( 35, 35, 30, self.start, self.diff / 10 + self.start, false ); 36 | self.context.stroke(); 37 | if( self.loaded >= self.total ) { 38 | clearInterval( self.timer ); 39 | } 40 | self.loaded++; 41 | } 42 | }; 43 | var CircularSkillBar = function( elements ) { 44 | this.bars = document.querySelectorAll( elements ); 45 | if( this.bars.length > 0 ) { 46 | this.init(); 47 | } 48 | }; 49 | CircularSkillBar.prototype = { 50 | init: function() { 51 | this.tick = 25; 52 | this.progress(); 53 | }, 54 | progress: function() { 55 | var self = this; 56 | var index = 0; 57 | var firstCanvas = self.bars[0].querySelector( "canvas" ); 58 | var firstProg = new Progress( firstCanvas ); 59 | var timer = setInterval(function() { 60 | index++; 61 | var canvas = self.bars[index].querySelector('canvas'); 62 | 63 | var prog = new Progress( canvas ); 64 | 65 | if( index +1 == self.bars.length ) { 66 | clearInterval( timer ); 67 | } 68 | 69 | }, self.tick * 100); 70 | 71 | } 72 | }; 73 | document.addEventListener( "DOMContentLoaded", function() { 74 | var circularBars = new CircularSkillBar( ".single-pie-bar" ); 75 | }); 76 | })(); 77 | -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | === Plugin Name === 2 | Contributors: colorlibplugins, silkalns 3 | Tags: woocommerce, widgets, plugin, demo, companion, home page, one page, parallax, social, portfolio, projects 4 | Requires at least: 5.2 5 | Tested up to: 5.6 6 | Stable tag: trunk 7 | License: GPLv3 or later 8 | License URI: http://www.gnu.org/licenses/gpl-3.0.html 9 | 10 | Hus Companion is a companion plugin for Companion WordPress theme by Colorlib.com. 11 | == Description == 12 | 13 | Hus Companion is a companion for Hus WordPress theme by Colorlib.com. This plugin won't do anything for other free or premium WordPress themes and you need to download and install Companion. If you are having problems with Companion theme or its companion plugin the fastest way to receive help is via our theme support forum. 14 | 15 | This plugin will add necessary WordPress widgets and allow to import demo content which will help you to with website setup. 16 | 17 | While Companion is a great one page WordPress theme it might not be for everyone therefore you might want to check other free WordPress themes that are created by Colorlib. 18 | 19 | = Plugin Options = 20 | 21 | * Creates required WordPress widgets to be used in theme 22 | * Creates demo(dummy) content for widgets to make them easier to use and understand how they work 23 | * Provides an option to import demo(dummy) content. 24 | 25 | = About Colorlib = 26 | 27 | Colorlib is the best and by far the most popular source for free and premium WordPress themes. Our themes has been downloaded over 1,5 million times and are used by developers, webmasters and regular users all over the world. We believe in open source and that's why we have made our themes free to use for private and commercial use. 28 | 29 | = Further Reading = 30 | 31 | If you are new to WordPress but are dedicated to make a website on your own Colorlib is the right place to start. Usually the trickiest part is to choose the right hosting because all hosting providers are not equal. We have outlined the best WordPress hosting providers and we hope you'll find them useful. 32 | 33 | 34 | == Installation == 35 | 36 | This section describes how to install the plugin and get it working. 37 | 38 | 1. Upload the whole contents of the folder `hus-companion` to the `/wp-content/plugins/` directory 39 | 2. Activate the plugin through the 'Plugins' menu in WordPress dashboard 40 | 3. Enjoy using it :) 41 | 42 | 43 | == Frequently Asked Questions == 44 | 45 | = What themes this plugin supports? = 46 | 47 | Currently it works only with Companion theme. 48 | 49 | = Am I obligated to use it? = 50 | 51 | You can still use Companion theme without this plugin but you won't be able to import demo content and use theme specific widgets that you see on front page of theme demo. 52 | 53 | == Changelog == 54 | 55 | = 1.0.0 = 56 | * Initial release. 57 | -------------------------------------------------------------------------------- /inc/demo-data/demo-import.php: -------------------------------------------------------------------------------- 1 | '; 17 | 18 | return array( 19 | array( 20 | 'import_file_name' => 'Hus Demo', 21 | 'local_import_file' => HUS_COMPANION_DEMO_DIR_PATH .'hus-demo.xml', 22 | 'local_import_widget_file' => HUS_COMPANION_DEMO_DIR_PATH .'hus-widgets-demo.wie', 23 | 'import_customizer_file_url' => plugins_url( 'hus-customizer.dat', __FILE__ ), 24 | 'import_notice' => $demoImg, 25 | ), 26 | ); 27 | } 28 | add_filter( 'pt-ocdi/import_files', 'hus_import_files' ); 29 | 30 | 31 | // demo import setup 32 | function hus_after_import_setup() { 33 | // Assign menus to their locations. 34 | $main_menu = get_term_by( 'name', 'Main Menu', 'nav_menu' ); 35 | $important_links = get_term_by( 'name', 'Important Links', 'nav_menu' ); 36 | 37 | set_theme_mod( 'nav_menu_locations', array( 38 | 'primary-menu' => $main_menu->term_id, 39 | 'important-links' => $important_links->term_id, 40 | ) 41 | ); 42 | 43 | // Assign front page and posts page (blog page). 44 | $front_page_id = get_page_by_title( 'Homepage' ); 45 | $blog_page_id = get_page_by_title( 'Blog' ); 46 | 47 | update_option( 'show_on_front', 'page' ); 48 | update_option( 'page_on_front', $front_page_id->ID ); 49 | update_option( 'page_for_posts', $blog_page_id->ID ); 50 | update_option( 'posts_per_page', 3 ); 51 | 52 | // Update the post to draft after import is done 53 | hus_update_the_followed_post_page_status(); 54 | 55 | // Add an option to check after import is done 56 | update_option( 'hus-import-data', true ); 57 | 58 | } 59 | add_action( 'pt-ocdi/after_import', 'hus_after_import_setup' ); 60 | 61 | //disable the branding notice after successful demo import 62 | add_filter( 'pt-ocdi/disable_pt_branding', '__return_true' ); 63 | 64 | //change the location, title and other parameters of the plugin page 65 | function hus_import_plugin_page_setup( $default_settings ) { 66 | $default_settings['parent_slug'] = 'themes.php'; 67 | $default_settings['page_title'] = esc_html__( 'One Click Demo Import' , 'hus-companion' ); 68 | $default_settings['menu_title'] = esc_html__( 'Import Demo Data' , 'hus-companion' ); 69 | $default_settings['capability'] = 'import'; 70 | $default_settings['menu_slug'] = 'hus-demo-import'; 71 | 72 | return $default_settings; 73 | } 74 | add_filter( 'pt-ocdi/plugin_page_setup', 'hus_import_plugin_page_setup' ); 75 | 76 | // Enqueue scripts 77 | function hus_demo_import_custom_scripts(){ 78 | 79 | 80 | if( isset( $_GET['page'] ) && $_GET['page'] == 'hus-demo-import' ){ 81 | // style 82 | wp_enqueue_style( 'hus-demo-import', plugins_url( 'css/demo-import.css', __FILE__ ), array(), '1.0', false ); 83 | } 84 | 85 | 86 | } 87 | add_action( 'admin_enqueue_scripts', 'hus_demo_import_custom_scripts' ); 88 | -------------------------------------------------------------------------------- /inc/elementor-widgets/assets/js/jquery.counterup.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jquery.counterup.js 1.0 3 | * 4 | * Copyright 2013, Benjamin Intal http://gambit.ph @bfintal 5 | * Released under the GPL v2 License 6 | * 7 | * Date: Nov 26, 2013 8 | */ 9 | (function( $ ){ 10 | "use strict"; 11 | 12 | $.fn.counterUp = function( options ) { 13 | 14 | // Defaults 15 | var settings = $.extend({ 16 | 'time': 400, 17 | 'delay': 10 18 | }, options); 19 | 20 | return this.each(function(){ 21 | 22 | // Store the object 23 | var $this = $(this); 24 | var $settings = settings; 25 | 26 | var counterUpper = function() { 27 | var nums = []; 28 | var divisions = $settings.time / $settings.delay; 29 | var num = $this.text(); 30 | var isComma = /[0-9]+,[0-9]+/.test(num); 31 | num = num.replace(/,/g, ''); 32 | var isInt = /^[0-9]+$/.test(num); 33 | var isFloat = /^[0-9]+\.[0-9]+$/.test(num); 34 | var decimalPlaces = isFloat ? (num.split('.')[1] || []).length : 0; 35 | 36 | // Generate list of incremental numbers to display 37 | for (var i = divisions; i >= 1; i--) { 38 | 39 | // Preserve as int if input was int 40 | var newNum = parseInt(num / divisions * i); 41 | 42 | // Preserve float if input was float 43 | if (isFloat) { 44 | newNum = parseFloat(num / divisions * i).toFixed(decimalPlaces); 45 | } 46 | 47 | // Preserve commas if input had commas 48 | if (isComma) { 49 | while (/(\d+)(\d{3})/.test(newNum.toString())) { 50 | newNum = newNum.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2'); 51 | } 52 | } 53 | 54 | nums.unshift(newNum); 55 | } 56 | 57 | $this.data('counterup-nums', nums); 58 | $this.text('0'); 59 | 60 | // Updates the number until we're done 61 | // var f = function() { 62 | // $this.text($this.data('counterup-nums').shift()); 63 | // if ($this.data('counterup-nums').length) { 64 | // setTimeout($this.data('counterup-func'), $settings.delay); 65 | // } else { 66 | // delete $this.data('counterup-nums'); 67 | // $this.data('counterup-nums', null); 68 | // $this.data('counterup-func', null); 69 | // } 70 | // }; 71 | var f = function () { 72 | if (!$this.data('counterup-nums')) { 73 | return; 74 | } 75 | $this.text($this.data('counterup-nums').shift()); 76 | if ($this.data('counterup-nums').length) { 77 | setTimeout($this.data('counterup-func'), $settings.delay); 78 | } else { 79 | delete $this.data('counterup-nums'); 80 | $this.data('counterup-nums', null); 81 | $this.data('counterup-func', null); 82 | } 83 | }; 84 | $this.data('counterup-func', f); 85 | 86 | // Start the count up 87 | setTimeout($this.data('counterup-func'), $settings.delay); 88 | }; 89 | 90 | // Perform counts when the element gets into view 91 | $this.waypoint(counterUpper, { offset: '100%', triggerOnce: true }); 92 | }); 93 | 94 | }; 95 | 96 | })( jQuery ); -------------------------------------------------------------------------------- /inc/sidebar-widgets/instagram.php: -------------------------------------------------------------------------------- 1 | esc_html__('Hus Instagram Photo Widget','hus-companion'), 10 | )); 11 | } 12 | 13 | // Output====================== 14 | public function widget($args, $instance){ 15 | 16 | $title = apply_filters( 'widget_title', $instance['title'] ); 17 | $insta_user = apply_filters( 'widget_insta_user', $instance['insta_user'] ); 18 | $insta_items = apply_filters( 'widget_insta_items', $instance['insta_items'] ); 19 | 20 | 21 | echo wp_kses_post( $args['before_widget'] ); 22 | if ( ! empty( $title ) ) 23 | echo wp_kses_post( $args['before_title'] . $title . $args['after_title'] ); ?> 24 | 25 |
26 |
27 | 28 |
29 | 30 | 31 | 42 |

43 | 44 | 45 |

46 | 47 |

48 | 49 | 50 |

51 | 52 |

53 | 54 | 55 |

56 | 57 | 58 | esc_html__( 'Show most latest blog post.', 'hus-companion' ), ) 34 | ); 35 | 36 | } 37 | 38 | // This is where the action happens 39 | public function widget( $args, $instance ) { 40 | $title = apply_filters( 'hus_blog_sectiontitle', $instance['sectiontitle'] ); 41 | $postnumber = apply_filters( 'hus_blog_postnumber', $instance['postnumber'] ); 42 | $style = apply_filters( 'hus_blog_style', $instance['style'] ); 43 | 44 | // before and after widget arguments are defined by themes 45 | echo wp_kses_post( $args['before_widget'] ); 46 | if ( ! empty( $title ) ) 47 | echo wp_kses_post( $args['before_title'] . $title . $args['after_title'] ); 48 | 49 | 50 | ?> 51 | 52 |
53 | 'post', 56 | 'posts_per_page' => esc_html( $postnumber ), 57 | ); 58 | 59 | $query = new WP_Query( $blogargs ); 60 | 61 | if( $query->have_posts() ): 62 | while( $query->have_posts() ): 63 | $query->the_post(); 64 | ?> 65 | 69 | 72 |
73 | 'img-fluid']); ?> 74 | 75 |
76 | 77 |

78 |
79 |

80 |
81 |
82 | 85 | 88 |
89 | 92 | 93 |
94 |
95 |
96 | 102 |
103 | 104 | 135 |

136 | 137 | 138 |

139 |

140 | 141 | 142 |

143 |

144 | 145 | 146 | 150 |

151 | 152 | access_token = hus_opt( 'hus_igaccess_token' ); 42 | } 43 | 44 | /** 45 | * @param $screen_name string Instagram username 46 | * @param $image_limit int Number of images to retrieve 47 | * @param $image_width int Desired image width to retrieve 48 | * 49 | * @return array|bool Array of tweets or false if method fails 50 | */ 51 | public function get_items( $image_limit, $image_width ) { 52 | 53 | $transient = 'zoom_instagram_is_configured'; 54 | 55 | $response = wp_remote_get( sprintf( 'https://api.instagram.com/v1/users/self/media/recent/?access_token=%s&count=%s', $this->access_token, $image_limit ) ); 56 | 57 | 58 | if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) { 59 | set_transient( $transient, false, MINUTE_IN_SECONDS ); 60 | 61 | return false; 62 | } 63 | 64 | 65 | 66 | $data = json_decode( wp_remote_retrieve_body( $response ) ); 67 | 68 | $result = array(); 69 | $username = ''; 70 | 71 | foreach ( $data->data as $item ) { 72 | 73 | if(empty($username)){ 74 | $username = $item->user->username; 75 | } 76 | 77 | $result[] = array( 78 | 'link' => $item->link, 79 | 'image-url' => $item->images->{ $this->get_best_size( $image_width ) }->url, 80 | 'likes' => $item->likes->count, 81 | 'comments' => $item->comments->count, 82 | 'location' => !empty( $item->location->name ) ? $item->location->name : '' 83 | ); 84 | } 85 | 86 | $result = array('items' => $result, 'username'=> $username ); 87 | set_transient( $transient, $result, 30 * MINUTE_IN_SECONDS ); 88 | 89 | return $result; 90 | } 91 | 92 | /** 93 | * @param $screen_name string Instagram username 94 | * 95 | * @return bool|int Instagram user id or false on error 96 | */ 97 | protected function get_user_id( $screen_name ) { 98 | $user_id_option = 'zoom_instagram_uid_' . $screen_name; 99 | 100 | if ( false !== ( $user_id = get_option( $user_id_option ) ) ) { 101 | return $user_id; 102 | } 103 | 104 | $response = wp_remote_get( sprintf( 'https://api.instagram.com/v1/users/search?q=%s&access_token=%s', $screen_name, $this->access_token ) ); 105 | 106 | if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) { 107 | return false; 108 | } 109 | 110 | $result = json_decode( wp_remote_retrieve_body( $response ) ); 111 | 112 | if ( ! isset( $result->data ) ) { 113 | return false; 114 | } 115 | 116 | $user_id = false; 117 | 118 | foreach ( $result->data as $user ) { 119 | if ( $user->username === $screen_name ) { 120 | $user_id = $user->id; 121 | 122 | break; 123 | } 124 | } 125 | 126 | update_option( $user_id_option, $user_id ); 127 | 128 | return $user_id; 129 | } 130 | 131 | /** 132 | * @param $desired_width int Desired image width in pixels 133 | * 134 | * @return string Image size for Instagram API 135 | */ 136 | protected function get_best_size( $desired_width ) { 137 | $size = 'thumbnail'; 138 | $sizes = array( 139 | 'thumbnail' => 137, 140 | 'low_resolution' => 150, 141 | 'standard_resolution' => 640 142 | ); 143 | 144 | $diff = PHP_INT_MAX; 145 | 146 | foreach ( $sizes as $key => $value ) { 147 | if ( abs( $desired_width - $value ) < $diff ) { 148 | $size = $key; 149 | $diff = abs( $desired_width - $value ); 150 | } 151 | } 152 | 153 | return $size; 154 | } 155 | 156 | /** 157 | * Check if given access token is valid for Instagram Api. 158 | */ 159 | public static function is_access_token_valid( $access_token ) { 160 | $response = wp_remote_get( sprintf( 'https://api.instagram.com/v1/users/self/?access_token=%s', $access_token ) ); 161 | 162 | if ( is_wp_error( $response ) ) { 163 | return $response; 164 | } 165 | 166 | if ( 200 != wp_remote_retrieve_response_code( $response ) ) { 167 | return false; 168 | } 169 | 170 | return true; 171 | } 172 | 173 | public function is_configured() { 174 | $transient = 'zoom_instagram_is_configured'; 175 | 176 | if ( false !== ( $result = get_transient( $transient ) ) ) { 177 | if ( 'yes' === $result ) { 178 | return true; 179 | } 180 | 181 | if ( 'no' === $result ) { 182 | return false; 183 | } 184 | } 185 | 186 | $condition = $this->is_access_token_valid( $this->access_token ); 187 | 188 | if ( true === $condition ) { 189 | set_transient( $transient, 'yes', DAY_IN_SECONDS ); 190 | 191 | return true; 192 | } 193 | 194 | set_transient( $transient, 'no', DAY_IN_SECONDS ); 195 | 196 | return false; 197 | } 198 | 199 | public static function reset_cache() { 200 | delete_transient( 'zoom_instagram_is_configured' ); 201 | } 202 | 203 | public function get_access_token() { 204 | return $this->access_token; 205 | } 206 | 207 | public function set_access_token( $access_token ) { 208 | $this->access_token = $access_token; 209 | } 210 | } 211 | ?> -------------------------------------------------------------------------------- /inc/sidebar-widgets/newsletter-widget.php: -------------------------------------------------------------------------------- 1 | esc_html__( 'Add footer newsletter signup form.', 'hus-companion' ), ) 28 | ); 29 | 30 | } 31 | 32 | // This is where the action happens 33 | public function widget( $args, $instance ) { 34 | 35 | $title = apply_filters( 'widget_title', $instance['title'] ); 36 | $actionurl = apply_filters( 'widget_actionurl', $instance['actionurl'] ); 37 | $desc = apply_filters( 'widget_desc', $instance['desc'] ); 38 | 39 | // before and after widget arguments are defined by themes 40 | echo wp_kses_post( $args['before_widget'] ); 41 | if ( ! empty( $title ) ) 42 | echo wp_kses_post( $args['before_title'] . $title . $args['after_title'] ); 43 | if( $desc ){ 44 | echo ''; 45 | } 46 | ?> 47 |
48 |
49 | 50 | 61 | 62 |
63 |
64 |
65 | 66 | 97 |

98 | 99 | 100 |

101 | 102 |

103 | 104 |

105 | 106 | 107 |

108 |

109 | 110 | 111 |

112 | 113 | start_controls_section( 50 | 'blog_content', 51 | [ 52 | 'label' => __( 'Latest Blog Setting', 'hus-companion' ), 53 | ] 54 | ); 55 | $this->add_control( 56 | 'sec_title', 57 | [ 58 | 'label' => __( 'Section Title', 'hus-companion' ), 59 | 'type' => Controls_Manager::TEXT, 60 | 'label_block' => true, 61 | 'default' => __( 'Our Latest News', 'hus-companion' ) 62 | ] 63 | ); 64 | $this->add_control( 65 | 'post_num', 66 | [ 67 | 'label' => esc_html__( 'Post Item', 'hus-companion' ), 68 | 'type' => Controls_Manager::NUMBER, 69 | 'label_block' => false, 70 | 'default' => absint(3), 71 | 'min' => 1, 72 | 'max' => 6, 73 | ] 74 | ); 75 | $this->add_control( 76 | 'post_order', 77 | [ 78 | 'label' => esc_html__( 'Post Order', 'hus-companion' ), 79 | 'type' => Controls_Manager::SWITCHER, 80 | 'label_block' => false, 81 | 'label_on' => 'ASC', 82 | 'label_off' => 'DESC', 83 | 'default' => 'yes', 84 | 'options' => [ 85 | 'no' => 'ASC', 86 | 'yes' => 'DESC' 87 | ] 88 | ] 89 | ); 90 | 91 | $this->end_controls_section(); // End few words content 92 | 93 | //------------------------------ Style Section ------------------------------ 94 | $this->start_controls_section( 95 | 'style_section', [ 96 | 'label' => __( 'Style Section Heading', 'hus-companion' ), 97 | 'tab' => Controls_Manager::TAB_STYLE, 98 | ] 99 | ); 100 | $this->add_control( 101 | 'section_title_color', [ 102 | 'label' => __( 'Section Title Color', 'hus-companion' ), 103 | 'type' => Controls_Manager::COLOR, 104 | 'selectors' => [ 105 | '{{WRAPPER}} .our_latest_news_area .section_title h3' => 'color: {{VALUE}};', 106 | ], 107 | ] 108 | ); 109 | $this->add_control( 110 | 'highlighted_color', [ 111 | 'label' => __( 'Highlighted Color', 'hus-companion' ), 112 | 'type' => Controls_Manager::COLOR, 113 | 'selectors' => [ 114 | '{{WRAPPER}} .our_latest_news_area .single_news .news_info .date' => 'background: {{VALUE}};', 115 | '{{WRAPPER}} .our_latest_news_area .single_news .news_info .news_meta h3 a:hover' => 'color: {{VALUE}};', 116 | '{{WRAPPER}} .our_latest_news_area .single_news .news_info .news_meta h3:hover' => 'color: {{VALUE}};', 117 | '{{WRAPPER}} .our_latest_news_area .single_news .news_info .news_meta a.read_more:hover' => 'color: {{VALUE}};', 118 | ], 119 | ] 120 | ); 121 | 122 | $this->end_controls_section(); 123 | } 124 | 125 | protected function render() { 126 | $this->load_widget_script(); 127 | $settings = $this->get_settings(); 128 | $sec_title = !empty( $settings['sec_title'] ) ? esc_html($settings['sec_title']) : ''; 129 | $post_num = !empty( $settings['post_num'] ) ? $settings['post_num'] : ''; 130 | $post_order = !empty( $settings['post_order'] ) ? $settings['post_order'] : ''; 131 | $post_order = $post_order == 'yes' ? 'DESC' : 'ASC'; 132 | ?> 133 | 134 | 135 |
136 |
137 |
138 |
139 |
140 | {$sec_title}

"; 143 | } 144 | ?> 145 |
146 | 147 | 148 |
149 |
150 |

151 |

152 |
153 |
154 | 161 |
162 |
163 |

164 | 165 | 166 | editor->is_edit_mode() === true ) { 171 | ?> 172 | 206 | start_controls_section( 49 | 'certificates_content', 50 | [ 51 | 'label' => __( 'Certificates contents', 'hus-companion' ), 52 | ] 53 | ); 54 | 55 | $this->add_control( 56 | 'sec_title', 57 | [ 58 | 'label' => __( 'Section Title', 'hus-companion' ), 59 | 'type' => Controls_Manager::TEXT, 60 | 'label_block' => true, 61 | 'default' => 'Property Certificates' 62 | ] 63 | ); 64 | $this->add_control( 65 | 'certificates', [ 66 | 'label' => __( 'Create New Slider', 'hus-companion' ), 67 | 'type' => Controls_Manager::REPEATER, 68 | 'title_field' => '{{{ title }}}', 69 | 'fields' => [ 70 | [ 71 | 'name' => 'certificate_img', 72 | 'label' => __( 'Certificate Image', 'hus-companion' ), 73 | 'description' => __( 'Best size is 195x257', 'hus-companion' ), 74 | 'label_block' => true, 75 | 'type' => Controls_Manager::MEDIA, 76 | ], 77 | [ 78 | 'name' => 'title', 79 | 'label' => __( 'Certificate Title', 'hus-companion' ), 80 | 'label_block' => true, 81 | 'type' => Controls_Manager::TEXT, 82 | 'default' => __( 'Certificate of Appreciation', 'hus-companion' ), 83 | ], 84 | ], 85 | 'default' => [ 86 | [ 87 | 'title' => __( 'Certificate of Appreciation', 'hus-companion' ), 88 | ], 89 | [ 90 | 'title' => __( 'Certificate of Architecture', 'hus-companion' ), 91 | ], 92 | [ 93 | 'title' => __( 'Certificate of Engineer', 'hus-companion' ), 94 | ], 95 | ] 96 | ] 97 | ); 98 | $this->end_controls_section(); // End Hero content 99 | 100 | 101 | /** 102 | * Style Tab 103 | * ------------------------------ Style Title ------------------------------ 104 | * 105 | */ 106 | $this->start_controls_section( 107 | 'style_title', [ 108 | 'label' => __( 'Style Certificate Section', 'hus-companion' ), 109 | 'tab' => Controls_Manager::TAB_STYLE, 110 | ] 111 | ); 112 | $this->add_control( 113 | 'title_col', [ 114 | 'label' => __( 'Title Color', 'hus-companion' ), 115 | 'type' => Controls_Manager::COLOR, 116 | 'selectors' => [ 117 | '{{WRAPPER}} .property_certificates .section_title h3' => 'color: {{VALUE}};', 118 | ], 119 | ] 120 | ); 121 | $this->add_control( 122 | 'highlighted_col', [ 123 | 'label' => __( 'Highlighted Color', 'hus-companion' ), 124 | 'type' => Controls_Manager::COLOR, 125 | 'selectors' => [ 126 | '{{WRAPPER}} .property_certificates .section_title h3 span' => 'color: {{VALUE}};', 127 | ], 128 | ] 129 | ); 130 | $this->end_controls_section(); 131 | } 132 | 133 | protected function render() { 134 | $settings = $this->get_settings(); 135 | $sec_title = !empty( $settings['sec_title'] ) ? $settings['sec_title'] : ''; 136 | $certificates = !empty( $settings['certificates'] ) ? $settings['certificates'] : ''; 137 | ?> 138 | 139 | 140 |
141 |
142 |
143 |
144 |
145 | '.wp_kses_post( nl2br($sec_title) ).''; 148 | } 149 | ?> 150 |
151 | 152 | 153 |
154 |
155 |
156 |
157 |
158 | 0 ) { 160 | foreach( $certificates as $item ) { 161 | $title = !empty( $item['title'] ) ? $item['title'] : ''; 162 | $certificate_img = !empty( $item['certificate_img']['id'] ) ? wp_get_attachment_image( $item['certificate_img']['id'], 'hus_certificate_img_195x257', '', array( 'alt' => $title ) ) : ''; 163 | ?> 164 |
165 | 169 | '.$certificate_img.' 170 |
171 | '; 172 | } 173 | ?> 174 |
175 | 179 |
180 |
181 |
182 |
183 | 184 | 185 | esc_html__( 'Add footer social links.', 'hus-companion' ), ) 28 | ); 29 | 30 | } 31 | 32 | // This is where the action happens 33 | public function widget( $args, $instance ) { 34 | 35 | $title = apply_filters( 'widget_title', $instance['title'] ); 36 | $desc = apply_filters( 'widget_text', $instance['desc'] ); 37 | $facebook = apply_filters( 'widget_text', $instance['facebook'] ); 38 | $twitter = apply_filters( 'widget_text', $instance['twitter'] ); 39 | $linkedin = apply_filters( 'widget_text', $instance['linkedin'] ); 40 | $instagram = apply_filters( 'widget_text', $instance['instagram'] ); 41 | $dribbble = apply_filters( 'widget_text', $instance['dribbble'] ); 42 | 43 | // before and after widget arguments are defined by themes 44 | echo wp_kses_post( $args['before_widget'] ); 45 | if ( ! empty( $title ) ) 46 | echo wp_kses_post( $args['before_title'] . $title . $args['after_title'] ); 47 | 48 | 49 | if( $desc ){ 50 | echo '

'.esc_html( $desc ).'

'; 51 | } ?> 52 | 53 |
54 | '; 57 | } 58 | if( $twitter ){ 59 | echo ''; 60 | } 61 | if( $dribbble ){ 62 | echo ''; 63 | } 64 | if( $linkedin ){ 65 | echo ''; 66 | } 67 | if( $instagram ){ 68 | echo ''; 69 | } 70 | ?> 71 |
72 | 73 | 91 |

92 | 93 | 94 |

95 |

96 | 97 | 98 |

99 |

100 | 101 | 102 |

103 |

104 | 105 | 106 |

107 |

108 | 109 | 110 |

111 |

112 | 113 | 114 |

115 |

116 | 117 | 118 |

119 | 120 | =0;s={horizontal:{},vertical:{}};f=1;a={};u="waypoints-context-id";p="resize.waypoints";y="scroll.waypoints";v=1;w="waypoints-waypoint-ids";g="waypoint";m="waypoints";o=function(){function t(t){var e=this;this.$element=t;this.element=t[0];this.didResize=false;this.didScroll=false;this.id="context"+f++;this.oldScroll={x:t.scrollLeft(),y:t.scrollTop()};this.waypoints={horizontal:{},vertical:{}};t.data(u,this.id);a[this.id]=this;t.bind(y,function(){var t;if(!(e.didScroll||c)){e.didScroll=true;t=function(){e.doScroll();return e.didScroll=false};return r.setTimeout(t,n[m].settings.scrollThrottle)}});t.bind(p,function(){var t;if(!e.didResize){e.didResize=true;t=function(){n[m]("refresh");return e.didResize=false};return r.setTimeout(t,n[m].settings.resizeThrottle)}})}t.prototype.doScroll=function(){var t,e=this;t={horizontal:{newScroll:this.$element.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.$element.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};if(c&&(!t.vertical.oldScroll||!t.vertical.newScroll)){n[m]("refresh")}n.each(t,function(t,r){var i,o,l;l=[];o=r.newScroll>r.oldScroll;i=o?r.forward:r.backward;n.each(e.waypoints[t],function(t,e){var n,i;if(r.oldScroll<(n=e.offset)&&n<=r.newScroll){return l.push(e)}else if(r.newScroll<(i=e.offset)&&i<=r.oldScroll){return l.push(e)}});l.sort(function(t,e){return t.offset-e.offset});if(!o){l.reverse()}return n.each(l,function(t,e){if(e.options.continuous||t===l.length-1){return e.trigger([i])}})});return this.oldScroll={x:t.horizontal.newScroll,y:t.vertical.newScroll}};t.prototype.refresh=function(){var t,e,r,i=this;r=n.isWindow(this.element);e=this.$element.offset();this.doScroll();t={horizontal:{contextOffset:r?0:e.left,contextScroll:r?0:this.oldScroll.x,contextDimension:this.$element.width(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:r?0:e.top,contextScroll:r?0:this.oldScroll.y,contextDimension:r?n[m]("viewportHeight"):this.$element.height(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};return n.each(t,function(t,e){return n.each(i.waypoints[t],function(t,r){var i,o,l,s,f;i=r.options.offset;l=r.offset;o=n.isWindow(r.element)?0:r.$element.offset()[e.offsetProp];if(n.isFunction(i)){i=i.apply(r.element)}else if(typeof i==="string"){i=parseFloat(i);if(r.options.offset.indexOf("%")>-1){i=Math.ceil(e.contextDimension*i/100)}}r.offset=o-e.contextOffset+e.contextScroll-i;if(r.options.onlyOnScroll&&l!=null||!r.enabled){return}if(l!==null&&l<(s=e.oldScroll)&&s<=r.offset){return r.trigger([e.backward])}else if(l!==null&&l>(f=e.oldScroll)&&f>=r.offset){return r.trigger([e.forward])}else if(l===null&&e.oldScroll>=r.offset){return r.trigger([e.forward])}})})};t.prototype.checkEmpty=function(){if(n.isEmptyObject(this.waypoints.horizontal)&&n.isEmptyObject(this.waypoints.vertical)){this.$element.unbind([p,y].join(" "));return delete a[this.id]}};return t}();l=function(){function t(t,e,r){var i,o;r=n.extend({},n.fn[g].defaults,r);if(r.offset==="bottom-in-view"){r.offset=function(){var t;t=n[m]("viewportHeight");if(!n.isWindow(e.element)){t=e.$element.height()}return t-n(this).outerHeight()}}this.$element=t;this.element=t[0];this.axis=r.horizontal?"horizontal":"vertical";this.callback=r.handler;this.context=e;this.enabled=r.enabled;this.id="waypoints"+v++;this.offset=null;this.options=r;e.waypoints[this.axis][this.id]=this;s[this.axis][this.id]=this;i=(o=t.data(w))!=null?o:[];i.push(this.id);t.data(w,i)}t.prototype.trigger=function(t){if(!this.enabled){return}if(this.callback!=null){this.callback.apply(this.element,t)}if(this.options.triggerOnce){return this.destroy()}};t.prototype.disable=function(){return this.enabled=false};t.prototype.enable=function(){this.context.refresh();return this.enabled=true};t.prototype.destroy=function(){delete s[this.axis][this.id];delete this.context.waypoints[this.axis][this.id];return this.context.checkEmpty()};t.getWaypointsByElement=function(t){var e,r;r=n(t).data(w);if(!r){return[]}e=n.extend({},s.horizontal,s.vertical);return n.map(r,function(t){return e[t]})};return t}();d={init:function(t,e){var r;if(e==null){e={}}if((r=e.handler)==null){e.handler=t}this.each(function(){var t,r,i,s;t=n(this);i=(s=e.context)!=null?s:n.fn[g].defaults.context;if(!n.isWindow(i)){i=t.closest(i)}i=n(i);r=a[i.data(u)];if(!r){r=new o(i)}return new l(t,r,e)});n[m]("refresh");return this},disable:function(){return d._invoke(this,"disable")},enable:function(){return d._invoke(this,"enable")},destroy:function(){return d._invoke(this,"destroy")},prev:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(e>0){return t.push(n[e-1])}})},next:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(et.oldScroll.y})},left:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.offset<=t.oldScroll.x})},right:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.offset>t.oldScroll.x})},enable:function(){return h._invoke("enable")},disable:function(){return h._invoke("disable")},destroy:function(){return h._invoke("destroy")},extendFn:function(t,e){return d[t]=e},_invoke:function(t){var e;e=n.extend({},s.vertical,s.horizontal);return n.each(e,function(e,n){n[t]();return true})},_filter:function(t,e,r){var i,o;i=a[n(t).data(u)];if(!i){return[]}o=[];n.each(i.waypoints[e],function(t,e){if(r(i,e)){return o.push(e)}});o.sort(function(t,e){return t.offset-e.offset});return n.map(o,function(t){return t.element})}};n[m]=function(){var t,n;n=arguments[0],t=2<=arguments.length?e.call(arguments,1):[];if(h[n]){return h[n].apply(null,t)}else{return h.aggregate.call(null,n)}};n[m].settings={resizeThrottle:100,scrollThrottle:30};return i.load(function(){return n[m]("refresh")})})}).call(this); 10 | -------------------------------------------------------------------------------- /inc/sidebar-widgets/about-widget.php: -------------------------------------------------------------------------------- 1 | esc_html__( 'Add footer about content', 'hus-companion' ), ) 34 | ); 35 | 36 | } 37 | 38 | // This is where the action happens 39 | public function widget( $args, $instance ) { 40 | 41 | $title = apply_filters( 'widget_title', $instance['title'] ); 42 | $image = apply_filters( 'widget_image', $instance['image'] ); 43 | $textarea = apply_filters( 'widget_textarea', $instance['textarea'] ); 44 | 45 | // before and after widget arguments are defined by themes 46 | echo wp_kses_post( $args['before_widget'] ); 47 | if ( ! empty( $title ) ) 48 | echo wp_kses_post( $args['before_title'] . $title . $args['after_title'] ); 49 | 50 | 51 | ?> 52 | 70 | 100 |

101 | 102 | 103 |

104 | 105 |

106 | 107 | 108 |

109 | 110 |

111 | 112 |

113 |
114 | 115 | /> 116 | 117 | > 118 |
119 | 120 | 121 | 122 | /> 123 | 124 | 125 | 126 |
127 |
128 |

129 | 162 | 230 | start_controls_section( 49 | 'contact_info', 50 | [ 51 | 'label' => __( 'Contact Info', 'hus-companion' ), 52 | ] 53 | ); 54 | 55 | $this->add_control( 56 | 'info', [ 57 | 'label' => __( 'Create Contact Info', 'hus-companion' ), 58 | 'type' => Controls_Manager::REPEATER, 59 | 'title_field' => '{{{ label }}}', 60 | 'fields' => [ 61 | [ 62 | 'name' => 'label', 63 | 'label' => __( 'Contact Info', 'hus-companion' ), 64 | 'label_block' => true, 65 | 'type' => Controls_Manager::TEXT, 66 | 'default' => esc_html__( 'Dhaka, Bangladesh', 'hus-companion' ) 67 | ], 68 | [ 69 | 'name' => 'desc', 70 | 'label' => __( 'Contact Descriptions', 'hus-companion' ), 71 | 'type' => Controls_Manager::TEXTAREA, 72 | 'default' => esc_html__( 'Write something...', 'hus-companion' ) 73 | ], 74 | [ 75 | 'name' => 'icon', 76 | 'label' => __( 'Icon', 'hus-companion' ), 77 | 'type' => Controls_Manager::ICON, 78 | ] 79 | 80 | ], 81 | 'default' => [ 82 | [ 83 | 'label' => esc_html__( 'Buttonwood, California.', 'hus-companion' ), 84 | 'desc' => esc_html__( 'Rosemead, CA 91770', 'hus-companion' ), 85 | 'icon' => 'fa fa-home', 86 | ], 87 | [ 88 | 'label' => esc_html__( '00 (440) 9865 562', 'hus-companion' ), 89 | 'desc' => esc_html__( 'Mon to Fri 9am to 6pm', 'hus-companion' ), 90 | 'icon' => 'fa fa-tablet', 91 | ], 92 | [ 93 | 'label' => esc_html__( 'support@colorlib.com', 'hus-companion' ), 94 | 'desc' => esc_html__( 'Send us your query anytime!', 'hus-companion' ), 95 | 'icon' => 'fa fa-envelope-o', 96 | ], 97 | ] 98 | ] 99 | ); 100 | 101 | $this->end_controls_section(); // End Contact Info 102 | 103 | // ---------------------------------------- Contact Form ------------------------------ 104 | $this->start_controls_section( 105 | 'contact_form', 106 | [ 107 | 'label' => __( 'Contact Form', 'hus-companion' ), 108 | ] 109 | ); 110 | $this->add_control( 111 | 'contact_form_title', 112 | [ 113 | 'label' => esc_html__( 'Contact Form Title', 'hus-companion' ), 114 | 'type' => Controls_Manager::TEXT, 115 | 'label_block' => true, 116 | 'default' => esc_html__('Get in Touch', 'hus-companion') 117 | ] 118 | ); 119 | $this->add_control( 120 | 'contact_formshortcode', 121 | [ 122 | 'label' => esc_html__( 'Form Shortcode', 'hus-companion' ), 123 | 'type' => Controls_Manager::TEXT, 124 | 'label_block' => true 125 | ] 126 | ); 127 | $this->end_controls_section(); // End Contact Form 128 | 129 | 130 | /** 131 | * Style Tab 132 | * ------------------------------ Style ------------------------------ 133 | * 134 | */ 135 | $this->start_controls_section( 136 | 'style_content_color', [ 137 | 'label' => __( 'Style Content Color', 'hus-companion' ), 138 | 'tab' => Controls_Manager::TAB_STYLE, 139 | ] 140 | ); 141 | 142 | $this->add_control( 143 | 'color_title', [ 144 | 'label' => __( 'Right Text Title Color', 'hus-companion' ), 145 | 'type' => Controls_Manager::COLOR, 146 | 'default' => '#2a2a2a', 147 | 'selectors' => [ 148 | '{{WRAPPER}} .contact-info .media-body h3' => 'color: {{VALUE}};', 149 | ], 150 | ] 151 | ); 152 | $this->add_control( 153 | 'color_desc', [ 154 | 'label' => __( 'Right Text Sub Title Color', 'hus-companion' ), 155 | 'type' => Controls_Manager::COLOR, 156 | 'default' => '#8a8a8a', 157 | 'selectors' => [ 158 | '{{WRAPPER}} .contact-info .media-body p' => 'color: {{VALUE}};', 159 | ], 160 | ] 161 | ); 162 | $this->add_control( 163 | 'color_icon', [ 164 | 'label' => __( 'Icon Color', 'hus-companion' ), 165 | 'type' => Controls_Manager::COLOR, 166 | 'default' => '#8f9195', 167 | 'selectors' => [ 168 | '{{WRAPPER}} .contact-info__icon i, .contact-info__icon span' => 'color: {{VALUE}};', 169 | ], 170 | ] 171 | ); 172 | 173 | $this->end_controls_section(); 174 | 175 | 176 | } 177 | 178 | protected function render() { 179 | 180 | $settings = $this->get_settings(); 181 | 182 | 183 | ?> 184 |
185 |
186 |
187 |
188 | ' . esc_html( $settings['contact_form_title'] ) . ''; 191 | } 192 | ?> 193 | 194 |
195 |
196 | 201 |
202 | 203 |
204 | 0 ): 206 | foreach( $settings[ 'info' ] as $info ): 207 | ?> 208 |
209 | 210 |
211 |

212 |

213 |
214 |
215 | 219 |
220 |
221 |
222 |
223 | 224 | start_controls_section( 48 | 'left_content', 49 | [ 50 | 'label' => __( 'Left Section Settings', 'hus-companion' ), 51 | ] 52 | ); 53 | 54 | $this->add_control( 55 | 'sec_title', 56 | [ 57 | 'label' => esc_html__( 'Experience Value', 'hus-companion' ), 58 | 'type' => Controls_Manager::TEXT, 59 | 'label_block' => true, 60 | 'default' => 'Get a free
quotation Today!', 61 | ] 62 | ); 63 | $this->add_control( 64 | 'text', 65 | [ 66 | 'label' => esc_html__( 'Text', 'hus-companion' ), 67 | 'type' => Controls_Manager::TEXT, 68 | 'label_block' => true, 69 | 'default' => __( 'Have any questions in mind?', 'hus-companion' ), 70 | ] 71 | ); 72 | $this->add_control( 73 | 'btn_label', 74 | [ 75 | 'label' => esc_html__( 'Button Label', 'hus-companion' ), 76 | 'type' => Controls_Manager::TEXT, 77 | 'label_block' => true, 78 | 'default' => __( 'Contact Us', 'hus-companion' ), 79 | ] 80 | ); 81 | $this->add_control( 82 | 'btn_url', 83 | [ 84 | 'label' => esc_html__( 'Button URL', 'hus-companion' ), 85 | 'type' => Controls_Manager::URL, 86 | 'label_block' => true, 87 | ] 88 | ); 89 | $this->end_controls_section(); // End left content 90 | 91 | // Right section 92 | $this->start_controls_section( 93 | 'right_content', 94 | [ 95 | 'label' => __( 'Right Section Settings', 'hus-companion' ), 96 | ] 97 | ); 98 | 99 | $this->add_control( 100 | 'sec_img', 101 | [ 102 | 'label' => esc_html__( 'Right Image', 'hus-companion' ), 103 | 'description' => esc_html__( 'Best size is 922x656', 'hus-companion' ), 104 | 'type' => Controls_Manager::MEDIA, 105 | 'label_block' => true, 106 | ] 107 | ); 108 | $this->add_control( 109 | 'phone_label', 110 | [ 111 | 'label' => esc_html__( 'Phone Label', 'hus-companion' ), 112 | 'type' => Controls_Manager::TEXT, 113 | 'label_block' => true, 114 | 'default' => esc_html__( 'say Hello,', 'hus-companion' ), 115 | ] 116 | ); 117 | $this->add_control( 118 | 'phone_number', 119 | [ 120 | 'label' => esc_html__( 'Phone Number', 'hus-companion' ), 121 | 'type' => Controls_Manager::TEXT, 122 | 'label_block' => true, 123 | 'default' => esc_html__( '+44 563 986 4785', 'hus-companion' ), 124 | ] 125 | ); 126 | $this->end_controls_section(); // End left content 127 | 128 | //------------------------------ Style title ------------------------------ 129 | 130 | // Top Section Styles 131 | $this->start_controls_section( 132 | 'quotation_styles', [ 133 | 'label' => __( 'Quotation Section Styles', 'hus-companion' ), 134 | 'tab' => Controls_Manager::TAB_STYLE, 135 | ] 136 | ); 137 | 138 | $this->add_control( 139 | 'title_col', [ 140 | 'label' => __( 'Title Color', 'hus-companion' ), 141 | 'type' => Controls_Manager::COLOR, 142 | 'selectors' => [ 143 | '{{WRAPPER}} .quotation_area .quotation_text .quotation_info h3' => 'color: {{VALUE}} !important', 144 | ], 145 | ] 146 | ); 147 | $this->add_control( 148 | 'highlighted_col', [ 149 | 'label' => __( 'Highlighted Text Color', 'hus-companion' ), 150 | 'type' => Controls_Manager::COLOR, 151 | 'selectors' => [ 152 | '{{WRAPPER}} .quotation_area .quotation_text .quotation_info .boxed-btn3' => 'color: {{VALUE}}; border-color: {{VALUE}}', 153 | '{{WRAPPER}} .quotation_area .quotation_text .quotation_info .boxed-btn3:hover' => 'background: {{VALUE}}', 154 | '{{WRAPPER}} .quotation_area .quotation_text .sayhello .icon i' => 'color: {{VALUE}}', 155 | '{{WRAPPER}} .quotation_area .quotation_text .sayhello .num h3' => 'color: {{VALUE}}', 156 | ], 157 | ] 158 | ); 159 | 160 | $this->end_controls_section(); 161 | 162 | } 163 | 164 | protected function render() { 165 | $settings = $this->get_settings(); 166 | $sec_title = !empty( $settings['sec_title'] ) ? $settings['sec_title'] : ''; 167 | $text = !empty( $settings['text'] ) ? $settings['text'] : ''; 168 | $btn_label = !empty( $settings['btn_label'] ) ? $settings['btn_label'] : ''; 169 | $btn_url = !empty( $settings['btn_url']['url'] ) ? $settings['btn_url']['url'] : ''; 170 | $sec_img = $settings['sec_img']['url'] ? $settings['sec_img']['url'] : ''; 171 | $phone_label = !empty( $settings['phone_label'] ) ? $settings['phone_label'] : ''; 172 | $phone_number = !empty( $settings['phone_number'] ) ? $settings['phone_number'] : ''; 173 | ?> 174 | 175 | 180 | 181 | 182 |
183 |
184 |
185 |
186 |
187 |
188 | '.wp_kses_post(nl2br($sec_title)).''; 191 | } 192 | if ( $text ) { 193 | echo '

'.wp_kses_post( nl2br($text) ).'

'; 194 | } 195 | if ( $btn_label ) { 196 | echo ''.esc_html( $btn_label ).''; 197 | } 198 | ?> 199 |
200 |
201 |
202 | 203 |
204 |
205 | '.esc_html($phone_label).''; 208 | } 209 | if ( $phone_number ) { 210 | echo '

'.esc_html( $phone_number ).'

'; 211 | } 212 | ?> 213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 | 221 | ', ''] 14 | }); 15 | } 16 | 17 | if ($.fn.owlCarousel) { 18 | $(".hus-service-slides").owlCarousel({ 19 | items: 3, 20 | loop: true, 21 | autoplay: true, 22 | smartSpeed: 800, 23 | margin: 30, 24 | center: true, 25 | dots: false, 26 | nav: true, 27 | startPosition: 1, 28 | navText: ['', ''], 29 | responsive: { 30 | 0: { 31 | items: 1 32 | }, 33 | 576: { 34 | items: 2 35 | }, 36 | 768: { 37 | items: 3 38 | } 39 | } 40 | }); 41 | } 42 | 43 | if ($.fn.owlCarousel) { 44 | $(".hus-workflow-slides").owlCarousel({ 45 | items: 3, 46 | loop: true, 47 | autoplay: true, 48 | smartSpeed: 800, 49 | margin: 30, 50 | center: true, 51 | dots: true, 52 | startPosition: 1, 53 | responsive: { 54 | 0: { 55 | items: 1 56 | }, 57 | 576: { 58 | items: 2 59 | }, 60 | 768: { 61 | items: 3 62 | } 63 | } 64 | }); 65 | } 66 | 67 | if ($.fn.owlCarousel) { 68 | $(".hus-team-slides").owlCarousel({ 69 | items: 3, 70 | loop: true, 71 | autoplay: true, 72 | smartSpeed: 800, 73 | margin: 50, 74 | center: true, 75 | nav: true, 76 | navText: ['', ''], 77 | responsive: { 78 | 0: { 79 | items: 1 80 | }, 81 | 576: { 82 | items: 2 83 | }, 84 | 768: { 85 | items: 3 86 | } 87 | } 88 | }); 89 | } 90 | 91 | if ($.fn.owlCarousel) { 92 | $(".testimonials-slides").owlCarousel({ 93 | items: 3, 94 | loop: true, 95 | autoplay: true, 96 | smartSpeed: 1500, 97 | margin: 0, 98 | center: true, 99 | nav: true, 100 | navText: ['', ''], 101 | responsive: { 102 | 0: { 103 | items: 1 104 | }, 105 | 576: { 106 | items: 2 107 | }, 108 | 768: { 109 | items: 3 110 | } 111 | } 112 | }); 113 | } 114 | 115 | if ($.fn.barfiller) { 116 | 117 | $('.bar').each(function () { 118 | var $this = $(this), 119 | $color = $this.data('color'); 120 | 121 | $this.barfiller({ 122 | tooltip: true, 123 | duration: 1000, 124 | barColor: $color, 125 | animateOnResize: true 126 | }); 127 | 128 | 129 | }) 130 | 131 | } 132 | if ($.fn.imagesLoaded) { 133 | $('.hus-portfolio').imagesLoaded(function () { 134 | // filter items on button click 135 | $('.portfolio-menu').on('click', 'p', function () { 136 | var filterValue = $(this).attr('data-filter'); 137 | $grid.isotope({ 138 | filter: filterValue 139 | }); 140 | }); 141 | // init Isotope 142 | var $grid = $('.hus-portfolio').isotope({ 143 | itemSelector: '.single_gallery_item', 144 | percentPosition: true, 145 | masonry: { 146 | columnWidth: '.single_gallery_item' 147 | } 148 | }); 149 | }); 150 | } 151 | 152 | $('.portfolio-menu button.btn').on('click', function () { 153 | $('.portfolio-menu button.btn').removeClass('active'); 154 | $(this).addClass('active'); 155 | }) 156 | if ($.fn.scrollUp) { 157 | $.scrollUp({ 158 | scrollSpeed: 1500, 159 | scrollText: '' 160 | }); 161 | } 162 | 163 | if ($.fn.counterUp) { 164 | $('.counter').counterUp({ 165 | delay: 10, 166 | time: 2000 167 | }); 168 | } 169 | 170 | 171 | if ($('#clock').length > 0) { 172 | var clock = $('#clock'); 173 | var eventTime = clock.data('event-time'); 174 | clock.countdown(eventTime, function (event) { 175 | $(this).html(event.strftime( 176 | '

%D

Days

%H

Hours

%M

Minutes

%S

Seconds
' 177 | )); 178 | }); 179 | } 180 | 181 | // Background video 182 | var $selector = $('[data-videoid]'); 183 | 184 | if ($selector.length) { 185 | $selector.each(function () { 186 | var $this = $(this); 187 | $this.YTPlayer({ 188 | fitToBackground: true, 189 | videoId: $this.data('videoid') 190 | }); 191 | }); 192 | } 193 | 194 | // MC Scripts 195 | var $subscribe = $('.hus-subscribe-newsletter-area'); 196 | if ($subscribe.length) { 197 | window.fnames = new Array(); 198 | window.ftypes = new Array(); 199 | fnames[0] = 'EMAIL'; 200 | ftypes[0] = 'email'; 201 | fnames[1] = 'FNAME'; 202 | ftypes[1] = 'text'; 203 | fnames[2] = 'LNAME'; 204 | ftypes[2] = 'text'; 205 | fnames[3] = 'ADDRESS'; 206 | ftypes[3] = 'address'; 207 | fnames[4] = 'PHONE'; 208 | ftypes[4] = 'phone'; 209 | fnames[5] = 'BIRTHDAY'; 210 | ftypes[5] = 'birthday'; 211 | } 212 | 213 | // Search listings 214 | var $form = $('.advanced-filtering-form'); 215 | if ($form.length) { 216 | var searchBtn = $('.advanced-filtering-form button.boxed-btn2'); 217 | searchBtn.click(function (event) { 218 | event.preventDefault(); 219 | var output_text = $('.all-listings-together').prev(); 220 | var search_text = $('.search-text').val(); 221 | var search_category = $('.search-category .nice-select .current').text(); 222 | var search_location = $('.search-location .nice-select .current').text(); 223 | var search_area_from = $('.area-from .nice-select .current').text(); 224 | var search_area_to = $('.area-to .nice-select .current').text(); 225 | var price_both = $('.advanced-filtering-form #amount').val(); 226 | var price_both = price_both.split(' - '); 227 | var price_min = price_both[0]; 228 | var price_max = price_both[1]; 229 | 230 | output_text.text('Loading...'); 231 | console.log(search_text + search_category + search_location + search_area_from + search_area_to + price_min + price_max); 232 | 233 | // Custom function for displaying message 234 | function add_message(message, type) { 235 | var html = "
" + message + "
"; 236 | $(".jam-confirmation-message").empty().append(html); 237 | $(".jam-confirmation-message").fadeIn(); 238 | } 239 | 240 | // Getting values from the form 241 | var nonce = $("#_wpnonce").val(); 242 | var data = new FormData(); 243 | data.append('action', 'prop_datas'); 244 | data.append('nonce', nonce); 245 | data.append('search_text', search_text); 246 | data.append('search_category', search_category); 247 | data.append('search_location', search_location); 248 | data.append('search_area_from', search_area_from); 249 | data.append('search_area_to', search_area_to); 250 | data.append('price_min', price_min); 251 | data.append('price_max', price_max); 252 | $.ajax({ 253 | url: prop_datas.ajax_url, 254 | type: 'POST', 255 | dataType: 'json', 256 | data: data, 257 | nonce: nonce, 258 | processData: false, 259 | contentType: false, 260 | cache: false, 261 | success: function (data) { 262 | console.log(data); 263 | $('.all-listings-together').html(data); 264 | var search_result_count = $('.all-listings-together span.total-search-count').data('total-search-count'); 265 | // console.log(search_result_count); 266 | if (search_result_count > 0) { 267 | output_text.text(search_result_count + ' Listings found'); 268 | } else { 269 | output_text.text(''); 270 | } 271 | // $form[0].reset(); 272 | } 273 | }) 274 | 275 | // Error 276 | .fail(function () { 277 | add_message(data.message ? data.message : 'Sorry! Something went wrong.', 'danger'); 278 | }) 279 | 280 | // Reset all fields 281 | // .always(function () { 282 | // event.target.reset(); 283 | // }); 284 | 285 | }); 286 | } 287 | 288 | })(jQuery); -------------------------------------------------------------------------------- /inc/elementor-widgets/assets/js/jquery.youtubebackground.js: -------------------------------------------------------------------------------- 1 | /* 2 | * YoutubeBackground - A wrapper for the Youtube API - Great for fullscreen background videos or just regular videos. 3 | * 4 | * Licensed under the MIT license: 5 | * http://www.opensource.org/licenses/mit-license.php 6 | * 7 | * 8 | * Version: 1.0.5 9 | * 10 | */ 11 | 12 | // Chain of Responsibility pattern. Creates base class that can be overridden. 13 | if (typeof Object.create !== "function") { 14 | Object.create = function(obj) { 15 | function F() {} 16 | F.prototype = obj; 17 | return new F(); 18 | }; 19 | } 20 | 21 | (function($, window, document) { 22 | var 23 | loadAPI = function loadAPI(callback) { 24 | 25 | // Load Youtube API 26 | var tag = document.createElement('script'), 27 | head = document.getElementsByTagName('head')[0]; 28 | 29 | if(window.location.origin == 'file://') { 30 | tag.src = 'http://www.youtube.com/iframe_api'; 31 | } else { 32 | tag.src = '//www.youtube.com/iframe_api'; 33 | } 34 | 35 | head.appendChild(tag); 36 | 37 | // Clean up Tags. 38 | head = null; 39 | tag = null; 40 | 41 | iframeIsReady(callback); 42 | }, 43 | iframeIsReady = function iframeIsReady(callback) { 44 | // Listen for Gobal YT player callback 45 | if (typeof YT === 'undefined' && typeof window.loadingPlayer === 'undefined') { 46 | // Prevents Ready Event from being called twice 47 | window.loadingPlayer = true; 48 | 49 | 50 | // Creates deferred so, other players know when to wait. 51 | window.dfd = $.Deferred(); 52 | window.onYouTubeIframeAPIReady = function() { 53 | window.onYouTubeIframeAPIReady = null; 54 | window.dfd.resolve( "done" ); 55 | callback(); 56 | }; 57 | } else if (typeof YT === 'object') { 58 | callback(); 59 | } else { 60 | window.dfd.done(function( name ) { 61 | callback(); 62 | }); 63 | } 64 | }; 65 | 66 | // YTPlayer Object 67 | YTPlayer = { 68 | player: null, 69 | 70 | // Defaults 71 | defaults: { 72 | ratio: 16 / 9, 73 | videoId: 'LSmgKRx5pBo', 74 | mute: true, 75 | repeat: true, 76 | width: $(window).width(), 77 | playButtonClass: 'YTPlayer-play', 78 | pauseButtonClass: 'YTPlayer-pause', 79 | muteButtonClass: 'YTPlayer-mute', 80 | volumeUpClass: 'YTPlayer-volume-up', 81 | volumeDownClass: 'YTPlayer-volume-down', 82 | start: 0, 83 | pauseOnScroll: false, 84 | fitToBackground: true, 85 | playerVars: { 86 | iv_load_policy: 3, 87 | modestbranding: 1, 88 | autoplay: 1, 89 | controls: 0, 90 | showinfo: 0, 91 | wmode: 'opaque', 92 | branding: 0, 93 | autohide: 0 94 | }, 95 | events: null 96 | }, 97 | 98 | /** 99 | * @function init 100 | * Intializes YTPlayer object 101 | */ 102 | init: function init(node, userOptions) { 103 | var self = this; 104 | 105 | self.userOptions = userOptions; 106 | 107 | self.$body = $('body'), 108 | self.$node = $(node), 109 | self.$window = $(window); 110 | 111 | // Setup event defaults with the reference to this 112 | self.defaults.events = { 113 | 'onReady': function(e) { 114 | self.onPlayerReady(e); 115 | 116 | // setup up pause on scroll 117 | if (self.options.pauseOnScroll) { 118 | self.pauseOnScroll(); 119 | } 120 | 121 | // Callback for when finished 122 | if (typeof self.options.callback == 'function') { 123 | self.options.callback.call(this); 124 | } 125 | }, 126 | 'onStateChange': function(e) { 127 | if (e.data === 1) { 128 | 129 | self.$node.find('img').fadeOut(400); 130 | self.$node.addClass('loaded'); 131 | } else if (e.data === 0 && self.options.repeat) { // video ended and repeat option is set true 132 | self.player.seekTo(self.options.start); 133 | } 134 | } 135 | } 136 | 137 | 138 | self.options = $.extend(true, {}, self.defaults, self.userOptions); 139 | self.options.height = Math.ceil(self.options.width / self.options.ratio); 140 | self.ID = (new Date()).getTime(); 141 | self.holderID = 'YTPlayer-ID-' + self.ID; 142 | 143 | if (self.options.fitToBackground) { 144 | self.createBackgroundVideo(); 145 | } else { 146 | self.createContainerVideo(); 147 | } 148 | // Listen for Resize Event 149 | self.$window.on('resize.YTplayer' + self.ID, function() { 150 | self.resize(self); 151 | }); 152 | 153 | loadAPI(self.onYouTubeIframeAPIReady.bind(self)); 154 | 155 | self.resize(self); 156 | 157 | return self; 158 | }, 159 | 160 | 161 | /** 162 | * @function pauseOnScroll 163 | * Adds window events to pause video on scroll. 164 | */ 165 | pauseOnScroll: function pauseOnScroll() { 166 | var self = this; 167 | self.$window.on('scroll.YTplayer' + self.ID, function() { 168 | var state = self.player.getPlayerState(); 169 | if (state === 1) { 170 | self.player.pauseVideo(); 171 | } 172 | }); 173 | self.$window.scrollStopped(function(){ 174 | var state = self.player.getPlayerState(); 175 | if (state === 2) { 176 | self.player.playVideo(); 177 | } 178 | }); 179 | }, 180 | /** 181 | * @function createContainerVideo 182 | * Adds HTML for video in a container 183 | */ 184 | createContainerVideo: function createContainerVideo() { 185 | var self = this; 186 | 187 | /*jshint multistr: true */ 188 | var $YTPlayerString = $('
\ 189 |
\ 190 |
\ 191 |
'); 192 | 193 | self.$node.append($YTPlayerString); 194 | self.$YTPlayerString = $YTPlayerString; 195 | $YTPlayerString = null; 196 | }, 197 | 198 | /** 199 | * @function createBackgroundVideo 200 | * Adds HTML for video background 201 | */ 202 | createBackgroundVideo: function createBackgroundVideo() { 203 | /*jshint multistr: true */ 204 | var self = this, 205 | $YTPlayerString = $('
\ 206 |
\ 207 |
\ 208 |
'); 209 | 210 | self.$node.append($YTPlayerString); 211 | self.$YTPlayerString = $YTPlayerString; 212 | $YTPlayerString = null; 213 | }, 214 | 215 | /** 216 | * @function resize 217 | * Resize event to change video size 218 | */ 219 | resize: function resize(self) { 220 | //var self = this; 221 | var container = $(window); 222 | 223 | if (!self.options.fitToBackground) { 224 | container = self.$node; 225 | } 226 | 227 | var width = container.width(), 228 | pWidth, // player width, to be defined 229 | height = container.height(), 230 | pHeight, // player height, tbd 231 | $YTPlayerPlayer = $('#' + self.holderID); 232 | 233 | // when screen aspect ratio differs from video, video must center and underlay one dimension 234 | if (width / self.options.ratio < height) { 235 | pWidth = Math.ceil(height * self.options.ratio); // get new player width 236 | $YTPlayerPlayer.width(pWidth).height(height).css({ 237 | left: (width - pWidth) / 2, 238 | top: 0 239 | }); // player width is greater, offset left; reset top 240 | } else { // new video width < window width (gap to right) 241 | pHeight = Math.ceil(width / self.options.ratio); // get new player height 242 | $YTPlayerPlayer.width(width).height(pHeight).css({ 243 | left: 0, 244 | top: (height - pHeight) / 2 245 | }); // player height is greater, offset top; reset left 246 | } 247 | 248 | $YTPlayerPlayer = null; 249 | container = null; 250 | }, 251 | 252 | /** 253 | * @function onYouTubeIframeAPIReady 254 | * @ params {object} YTPlayer object for access to options 255 | * Youtube API calls this function when the player is ready. 256 | */ 257 | onYouTubeIframeAPIReady: function onYouTubeIframeAPIReady() { 258 | var self = this; 259 | self.player = new window.YT.Player(self.holderID, self.options); 260 | }, 261 | 262 | /** 263 | * @function onPlayerReady 264 | * @ params {event} window event from youtube player 265 | */ 266 | onPlayerReady: function onPlayerReady(e) { 267 | if (this.options.mute) { 268 | e.target.mute(); 269 | } 270 | e.target.playVideo(); 271 | }, 272 | 273 | /** 274 | * @function getPlayer 275 | * returns youtube player 276 | */ 277 | getPlayer: function getPlayer() { 278 | return this.player; 279 | }, 280 | 281 | /** 282 | * @function destroy 283 | * destroys all! 284 | */ 285 | destroy: function destroy() { 286 | var self = this; 287 | 288 | self.$node 289 | .removeData('yt-init') 290 | .removeData('ytPlayer') 291 | .removeClass('loaded'); 292 | 293 | self.$YTPlayerString.remove(); 294 | 295 | $(window).off('resize.YTplayer' + self.ID); 296 | $(window).off('scroll.YTplayer' + self.ID); 297 | self.$body = null; 298 | self.$node = null; 299 | self.$YTPlayerString = null; 300 | self.player.destroy(); 301 | self.player = null; 302 | } 303 | }; 304 | 305 | // Scroll Stopped event. 306 | $.fn.scrollStopped = function(callback) { 307 | var $this = $(this), self = this; 308 | $this.scroll(function(){ 309 | if ($this.data('scrollTimeout')) { 310 | clearTimeout($this.data('scrollTimeout')); 311 | } 312 | $this.data('scrollTimeout', setTimeout(callback,250,self)); 313 | }); 314 | }; 315 | 316 | // Create plugin 317 | $.fn.YTPlayer = function(options) { 318 | 319 | return this.each(function() { 320 | var el = this; 321 | 322 | $(el).data("yt-init", true); 323 | var player = Object.create(YTPlayer); 324 | player.init(el, options); 325 | $.data(el, "ytPlayer", player); 326 | }); 327 | }; 328 | 329 | })(jQuery, window, document); -------------------------------------------------------------------------------- /inc/elementor-widgets/widgets/testimonial.php: -------------------------------------------------------------------------------- 1 | start_controls_section( 49 | 'testimonial_content', 50 | [ 51 | 'label' => __( 'Testimonial contents', 'hus-companion' ), 52 | ] 53 | ); 54 | 55 | $this->add_control( 56 | 'sliders', [ 57 | 'label' => __( 'Create New Slider', 'hus-companion' ), 58 | 'type' => Controls_Manager::REPEATER, 59 | 'title_field' => '{{{ client_name }}}', 60 | 'fields' => [ 61 | [ 62 | 'name' => 'client_img', 63 | 'label' => __( 'Client Image', 'hus-companion' ), 64 | 'description' => __( 'Best size is 130x130', 'hus-companion' ), 65 | 'label_block' => true, 66 | 'type' => Controls_Manager::MEDIA, 67 | ], 68 | [ 69 | 'name' => 'client_name', 70 | 'label' => __( 'Client Name', 'hus-companion' ), 71 | 'label_block' => true, 72 | 'type' => Controls_Manager::TEXT, 73 | 'default' => __( 'Margaret Lawson', 'hus-companion' ), 74 | ], 75 | [ 76 | 'name' => 'client_designation', 77 | 'label' => __( 'Client Designation', 'hus-companion' ), 78 | 'label_block' => true, 79 | 'type' => Controls_Manager::TEXT, 80 | 'default' => __( 'Creative Director', 'hus-companion' ), 81 | ], 82 | [ 83 | 'name' => 'text', 84 | 'label' => __( 'Review', 'hus-companion' ), 85 | 'label_block' => true, 86 | 'type' => Controls_Manager::TEXTAREA, 87 | 'default' => __( '“I am at an age where I just want to be fit and healthy our bodies are our responsibility! So start caring for your body and it will care for you. Eat clean it will care for you and workout hard.”', 'hus-companion' ), 88 | ], 89 | ], 90 | 'default' => [ 91 | [ 92 | 'client_name' => __( 'Margaret Lawson', 'hus-companion' ), 93 | 'client_designation' => __( 'Creative Director', 'hus-companion' ), 94 | 'Review' => __( '“I am at an age where I just want to be fit and healthy our bodies are our responsibility! So start caring for your body and it will care for you. Eat clean it will care for you and workout hard.”', 'hus-companion' ), 95 | ], 96 | [ 97 | 'client_name' => __( 'John Doe', 'hus-companion' ), 98 | 'client_designation' => __( 'Creative Designer', 'hus-companion' ), 99 | 'Review' => __( '“I am at an age where I just want to be fit and healthy our bodies are our responsibility! So start caring for your body and it will care for you. Eat clean it will care for you and workout hard.”', 'hus-companion' ), 100 | ], 101 | [ 102 | 'client_name' => __( 'Markus Sichler', 'hus-companion' ), 103 | 'client_designation' => __( 'Web Developer', 'hus-companion' ), 104 | 'Review' => __( '“I am at an age where I just want to be fit and healthy our bodies are our responsibility! So start caring for your body and it will care for you. Eat clean it will care for you and workout hard.”', 'hus-companion' ), 105 | ], 106 | ] 107 | ] 108 | ); 109 | $this->end_controls_section(); // End Hero content 110 | 111 | 112 | /** 113 | * Style Tab 114 | * ------------------------------ Style Title ------------------------------ 115 | * 116 | */ 117 | $this->start_controls_section( 118 | 'style_title', [ 119 | 'label' => __( 'Style Hero Section', 'hus-companion' ), 120 | 'tab' => Controls_Manager::TAB_STYLE, 121 | ] 122 | ); 123 | $this->add_control( 124 | 'quotation_col', [ 125 | 'label' => __( 'Double Quotation Color', 'hus-companion' ), 126 | 'type' => Controls_Manager::COLOR, 127 | 'selectors' => [ 128 | '{{WRAPPER}} .testimonial_area .single_testmonial .author_thumb::before' => 'color: {{VALUE}};', 129 | ], 130 | ] 131 | ); 132 | $this->end_controls_section(); 133 | } 134 | 135 | protected function render() { 136 | $this->load_widget_script(); 137 | $settings = $this->get_settings(); 138 | $sliders = !empty( $settings['sliders'] ) ? $settings['sliders'] : ''; 139 | ?> 140 | 141 | 142 |
143 |
144 |
145 |
146 | 185 | 189 |
190 |
191 |
192 |
193 | 194 | 195 | editor->is_edit_mode() === true ) { 200 | ?> 201 | 234 | start_controls_section( 49 | 'hero_content', 50 | [ 51 | 'label' => __( 'Hero section content', 'hus-companion' ), 52 | ] 53 | ); 54 | 55 | $this->add_control( 56 | 'sliders', [ 57 | 'label' => __( 'Create New Slider', 'hus-companion' ), 58 | 'type' => Controls_Manager::REPEATER, 59 | 'title_field' => '{{{ sec_title }}}', 60 | 'fields' => [ 61 | [ 62 | 'name' => 'item_img', 63 | 'label' => __( 'Item Image', 'hus-companion' ), 64 | 'label_block' => true, 65 | 'type' => Controls_Manager::MEDIA, 66 | 'default' => [ 67 | 'url' => Utils::get_placeholder_image_src(), 68 | ] 69 | ], 70 | [ 71 | 'name' => 'sec_title', 72 | 'label' => __( 'Title', 'hus-companion' ), 73 | 'label_block' => true, 74 | 'type' => Controls_Manager::TEXT, 75 | 'default' => __( 'We Create your deam appartment', 'hus-companion' ), 76 | ], 77 | [ 78 | 'name' => 'text', 79 | 'label' => __( 'Text', 'hus-companion' ), 80 | 'label_block' => true, 81 | 'type' => Controls_Manager::TEXTAREA, 82 | 'default' => __( 'Lorem ipsum dolor sit amet, consectetur adipilit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua Quis.', 'hus-companion' ), 83 | ], 84 | [ 85 | 'name' => 'btn_title', 86 | 'label' => __( 'Button Title', 'hus-companion' ), 87 | 'label_block' => true, 88 | 'type' => Controls_Manager::TEXT, 89 | 'default' => __( 'View Project', 'hus-companion' ), 90 | ], 91 | [ 92 | 'name' => 'btn_url', 93 | 'label' => __( 'Button URL', 'hus-companion' ), 94 | 'label_block' => true, 95 | 'type' => Controls_Manager::URL, 96 | ], 97 | ], 98 | 'default' => [ 99 | [ 100 | 'sec_title' => __( 'We Create your deam appartment', 'hus-companion' ), 101 | 'text' => __( 'Lorem ipsum dolor sit amet, consectetur adipilit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua Quis.', 'hus-companion' ), 102 | 'btn_title' => __( 'View Project', 'hus-companion' ), 103 | ], 104 | [ 105 | 'sec_title' => __( 'We Create your deam appartment', 'hus-companion' ), 106 | 'text' => __( 'Lorem ipsum dolor sit amet, consectetur adipilit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua Quis.', 'hus-companion' ), 107 | 'btn_title' => __( 'View Project', 'hus-companion' ), 108 | ], 109 | [ 110 | 'sec_title' => __( 'We Create your deam appartment', 'hus-companion' ), 111 | 'text' => __( 'Lorem ipsum dolor sit amet, consectetur adipilit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua Quis.', 'hus-companion' ), 112 | 'btn_title' => __( 'View Project', 'hus-companion' ), 113 | ], 114 | ] 115 | ] 116 | ); 117 | $this->end_controls_section(); // End Hero content 118 | 119 | 120 | /** 121 | * Style Tab 122 | * ------------------------------ Style Title ------------------------------ 123 | * 124 | */ 125 | $this->start_controls_section( 126 | 'style_title', [ 127 | 'label' => __( 'Style Hero Section', 'hus-companion' ), 128 | 'tab' => Controls_Manager::TAB_STYLE, 129 | ] 130 | ); 131 | $this->add_control( 132 | 'title_col', [ 133 | 'label' => __( 'Title Color', 'hus-companion' ), 134 | 'type' => Controls_Manager::COLOR, 135 | 'selectors' => [ 136 | '{{WRAPPER}} .slider_area .single_slider .slider_text h3' => 'color: {{VALUE}};', 137 | ], 138 | ] 139 | ); 140 | $this->add_control( 141 | 'text_col', [ 142 | 'label' => __( 'Text Color', 'hus-companion' ), 143 | 'type' => Controls_Manager::COLOR, 144 | 'selectors' => [ 145 | '{{WRAPPER}} .slider_area .single_slider .slider_text p' => 'color: {{VALUE}};', 146 | ], 147 | ] 148 | ); 149 | $this->add_control( 150 | 'btn_border_col', [ 151 | 'label' => __( 'Button Border Color', 'hus-companion' ), 152 | 'type' => Controls_Manager::COLOR, 153 | 'selectors' => [ 154 | '{{WRAPPER}} .slider_area .single_slider .slider_text .boxed-btn3' => 'border-color: {{VALUE}};', 155 | '{{WRAPPER}} .slider_area .single_slider .slider_text span' => 'background: {{VALUE}};', 156 | ], 157 | ] 158 | ); 159 | $this->add_control( 160 | 'btn_text_col', [ 161 | 'label' => __( 'Button Text Color', 'hus-companion' ), 162 | 'type' => Controls_Manager::COLOR, 163 | 'selectors' => [ 164 | '{{WRAPPER}} .slider_area .single_slider .slider_text .boxed-btn3' => 'color: {{VALUE}};', 165 | ], 166 | ] 167 | ); 168 | $this->add_control( 169 | 'btn_hover_bg_col', [ 170 | 'label' => __( 'Button Hover BG Color', 'hus-companion' ), 171 | 'type' => Controls_Manager::COLOR, 172 | 'selectors' => [ 173 | '{{WRAPPER}} .slider_area .single_slider .slider_text .boxed-btn3:hover' => 'background: {{VALUE}};', 174 | ], 175 | ] 176 | ); 177 | $this->end_controls_section(); 178 | } 179 | 180 | protected function render() { 181 | $this->load_widget_script(); 182 | $settings = $this->get_settings(); 183 | $sliders = !empty( $settings['sliders'] ) ? $settings['sliders'] : ''; 184 | ?> 185 | 186 |
187 | 224 |
225 | 226 | editor->is_edit_mode() === true ) { 231 | ?> 232 | 268 | start_controls_section( 49 | 'apartments_content', 50 | [ 51 | 'label' => __( 'Apartments contents', 'hus-companion' ), 52 | ] 53 | ); 54 | 55 | $this->add_control( 56 | 'apartments', [ 57 | 'label' => __( 'Create New Slider', 'hus-companion' ), 58 | 'type' => Controls_Manager::REPEATER, 59 | 'title_field' => '{{{ title }}}', 60 | 'fields' => [ 61 | [ 62 | 'name' => 'apartment_img', 63 | 'label' => __( 'Image', 'hus-companion' ), 64 | 'description' => __( 'Best size is 610x593', 'hus-companion' ), 65 | 'label_block' => true, 66 | 'type' => Controls_Manager::MEDIA, 67 | ], 68 | [ 69 | 'name' => 'price', 70 | 'label' => __( 'Price', 'hus-companion' ), 71 | 'label_block' => true, 72 | 'type' => Controls_Manager::TEXT, 73 | 'default' => __( '35.000', 'hus-companion' ), 74 | ], 75 | [ 76 | 'name' => 'title', 77 | 'label' => __( 'Title', 'hus-companion' ), 78 | 'label_block' => true, 79 | 'type' => Controls_Manager::TEXT, 80 | 'default' => __( 'Colorful little apartment', 'hus-companion' ), 81 | ], 82 | [ 83 | 'name' => 'item_url', 84 | 'label' => __( 'Details URL', 'hus-companion' ), 85 | 'label_block' => true, 86 | 'type' => Controls_Manager::URL, 87 | ], 88 | [ 89 | 'name' => 'field1', 90 | 'label' => __( 'Field 1', 'hus-companion' ), 91 | 'label_block' => true, 92 | 'type' => Controls_Manager::TEXT, 93 | 'default' => __( '2BD', 'hus-companion' ), 94 | ], 95 | [ 96 | 'name' => 'field2', 97 | 'label' => __( 'Field 2', 'hus-companion' ), 98 | 'label_block' => true, 99 | 'type' => Controls_Manager::TEXT, 100 | 'default' => __( '2BA', 'hus-companion' ), 101 | ], 102 | [ 103 | 'name' => 'field3', 104 | 'label' => __( 'Field 3', 'hus-companion' ), 105 | 'label_block' => true, 106 | 'type' => Controls_Manager::TEXT, 107 | 'default' => __( '920 SF', 'hus-companion' ), 108 | ], 109 | ], 110 | 'default' => [ 111 | [ 112 | 'price' => __( '35.000', 'hus-companion' ), 113 | 'title' => __( 'Colorful little apartment', 'hus-companion' ), 114 | 'field1' => __( '2BD', 'hus-companion' ), 115 | 'field2' => __( '2BA', 'hus-companion' ), 116 | 'field3' => __( '920 SF', 'hus-companion' ), 117 | ], 118 | [ 119 | 'price' => __( '35.000', 'hus-companion' ), 120 | 'title' => __( 'Colorful little apartment', 'hus-companion' ), 121 | 'field1' => __( '2BD', 'hus-companion' ), 122 | 'field2' => __( '2BA', 'hus-companion' ), 123 | 'field3' => __( '920 SF', 'hus-companion' ), 124 | ], 125 | [ 126 | 'price' => __( '35.000', 'hus-companion' ), 127 | 'title' => __( 'Colorful little apartment', 'hus-companion' ), 128 | 'field1' => __( '2BD', 'hus-companion' ), 129 | 'field2' => __( '2BA', 'hus-companion' ), 130 | 'field3' => __( '920 SF', 'hus-companion' ), 131 | ], 132 | [ 133 | 'price' => __( '35.000', 'hus-companion' ), 134 | 'title' => __( 'Colorful little apartment', 'hus-companion' ), 135 | 'field1' => __( '2BD', 'hus-companion' ), 136 | 'field2' => __( '2BA', 'hus-companion' ), 137 | 'field3' => __( '920 SF', 'hus-companion' ), 138 | ], 139 | [ 140 | 'price' => __( '35.000', 'hus-companion' ), 141 | 'title' => __( 'Colorful little apartment', 'hus-companion' ), 142 | 'field1' => __( '2BD', 'hus-companion' ), 143 | 'field2' => __( '2BA', 'hus-companion' ), 144 | 'field3' => __( '920 SF', 'hus-companion' ), 145 | ], 146 | [ 147 | 'price' => __( '35.000', 'hus-companion' ), 148 | 'title' => __( 'Colorful little apartment', 'hus-companion' ), 149 | 'field1' => __( '2BD', 'hus-companion' ), 150 | 'field2' => __( '2BA', 'hus-companion' ), 151 | 'field3' => __( '920 SF', 'hus-companion' ), 152 | ], 153 | ] 154 | ] 155 | ); 156 | $this->end_controls_section(); // End Hero content 157 | 158 | } 159 | 160 | protected function render() { 161 | $settings = $this->get_settings(); 162 | $apartments = !empty( $settings['apartments'] ) ? $settings['apartments'] : ''; 163 | 164 | if ( is_front_page() ) { 165 | $this->load_widget_script(); 166 | ?> 167 |
168 | 171 |
172 | 175 |
176 |
177 |
178 | hus_get_all_apartments($apartments, 'no')?> 179 |
180 |
181 |
182 | 0 ) { 188 | foreach( $apartments as $item ) { 189 | $title = !empty( $item['title'] ) ? $item['title'] : ''; 190 | $apartment_img = !empty( $item['apartment_img']['id'] ) ? wp_get_attachment_image( $item['apartment_img']['id'], 'hus_apartment_img_610x593', '', array( 'alt' => $title ) ) : ''; 191 | $price = !empty( $item['price'] ) ? $item['price'] : ''; 192 | $item_url = !empty( $item['item_url']['url'] ) ? $item['item_url']['url'] : ''; 193 | $field1 = !empty( $item['field1'] ) ? $item['field1'] : ''; 194 | $field2 = !empty( $item['field2'] ) ? $item['field2'] : ''; 195 | $field3 = !empty( $item['field3'] ) ? $item['field3'] : ''; 196 | $dynamic_markup_start = ($is_frontpage == 'yes') ? '
' : '
'; 197 | $dynamic_markup_end = ($is_frontpage == 'yes') ? '
' : '
'; 198 | 199 | echo $dynamic_markup_start; 200 | if ( $apartment_img ) { 201 | echo ' 202 |
203 | '.$apartment_img.' 204 |
205 | '; 206 | } 207 | 208 | echo ' 209 |
210 | $'.esc_html($price).' 211 |
'.esc_html($title).'
212 | 213 | 218 |
219 | '; 220 | echo $dynamic_markup_end; 221 | } 222 | } 223 | } 224 | 225 | public function load_widget_script(){ 226 | if( \Elementor\Plugin::$instance->editor->is_edit_mode() === true ) { 227 | ?> 228 | 260 | start_controls_section( 48 | 'left_content', 49 | [ 50 | 'label' => __( 'Left Section Settings', 'hus-companion' ), 51 | ] 52 | ); 53 | 54 | $this->add_control( 55 | 'sec_img', 56 | [ 57 | 'label' => esc_html__( 'Left Image', 'hus-companion' ), 58 | 'description' => esc_html__( 'Best size is 458x542', 'hus-companion' ), 59 | 'type' => Controls_Manager::MEDIA, 60 | 'label_block' => true, 61 | 'default' => [ 62 | 'url' => Utils::get_placeholder_image_src(), 63 | ] 64 | ] 65 | ); 66 | $this->add_control( 67 | 'exp_val', 68 | [ 69 | 'label' => esc_html__( 'Experience Value', 'hus-companion' ), 70 | 'type' => Controls_Manager::TEXT, 71 | 'label_block' => true, 72 | 'default' => 10, 73 | ] 74 | ); 75 | $this->add_control( 76 | 'exp_label', 77 | [ 78 | 'label' => esc_html__( 'Experience Label', 'hus-companion' ), 79 | 'type' => Controls_Manager::TEXT, 80 | 'label_block' => true, 81 | 'default' => __( 'Years of Exprince', 'hus-companion' ), 82 | ] 83 | ); 84 | $this->end_controls_section(); // End left content 85 | 86 | // Right section 87 | $this->start_controls_section( 88 | 'right_content', 89 | [ 90 | 'label' => __( 'Right Section Settings', 'hus-companion' ), 91 | ] 92 | ); 93 | $this->add_control( 94 | 'sec_title', 95 | [ 96 | 'label' => esc_html__( 'Section Title', 'hus-companion' ), 97 | 'type' => Controls_Manager::TEXT, 98 | 'label_block' => true, 99 | 'default' => 'We are Hus
Realestate Company', 100 | ] 101 | ); 102 | $this->add_control( 103 | 'text', 104 | [ 105 | 'label' => esc_html__( 'Text', 'hus-companion' ), 106 | 'type' => Controls_Manager::TEXTAREA, 107 | 'label_block' => true, 108 | 'default' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud.', 109 | ] 110 | ); 111 | 112 | 113 | $this->add_control( 114 | 'statistics_seperator', 115 | [ 116 | 'label' => esc_html__( 'Statistics', 'hus-companion' ), 117 | 'type' => Controls_Manager::HEADING, 118 | 'separator' => 'after' 119 | ] 120 | ); 121 | $this->add_control( 122 | 'item1_counter', 123 | [ 124 | 'label' => esc_html__( 'Counter Value 1', 'hus-companion' ), 125 | 'type' => Controls_Manager::TEXT, 126 | 'label_block' => true, 127 | 'default' => 120, 128 | ] 129 | ); 130 | $this->add_control( 131 | 'item1_text', 132 | [ 133 | 'label' => esc_html__( 'Title 1', 'hus-companion' ), 134 | 'type' => Controls_Manager::TEXT, 135 | 'label_block' => true, 136 | 'default' => esc_html__( 'Buildings', 'hus-companion' ), 137 | ] 138 | ); 139 | $this->add_control( 140 | 'item2_counter', 141 | [ 142 | 'label' => esc_html__( 'Counter Value 2', 'hus-companion' ), 143 | 'type' => Controls_Manager::TEXT, 144 | 'label_block' => true, 145 | 'default' => 500, 146 | ] 147 | ); 148 | $this->add_control( 149 | 'item2_text', 150 | [ 151 | 'label' => esc_html__( 'Title 2', 'hus-companion' ), 152 | 'type' => Controls_Manager::TEXT, 153 | 'label_block' => true, 154 | 'default' => esc_html__( 'Clients', 'hus-companion' ), 155 | ] 156 | ); 157 | $this->end_controls_section(); // End left content 158 | 159 | //------------------------------ Style title ------------------------------ 160 | 161 | // Top Section Styles 162 | $this->start_controls_section( 163 | 'about_sec_style', [ 164 | 'label' => __( 'About Section Styles', 'hus-companion' ), 165 | 'tab' => Controls_Manager::TAB_STYLE, 166 | ] 167 | ); 168 | 169 | $this->add_control( 170 | 'title_col', [ 171 | 'label' => __( 'Title Color', 'hus-companion' ), 172 | 'type' => Controls_Manager::COLOR, 173 | 'selectors' => [ 174 | '{{WRAPPER}} .about_info .section_title h3' => 'color: {{VALUE}};', 175 | ], 176 | ] 177 | ); 178 | $this->add_control( 179 | 'highlighted_col', [ 180 | 'label' => __( 'Highlighted Color', 'hus-companion' ), 181 | 'type' => Controls_Manager::COLOR, 182 | 'selectors' => [ 183 | '{{WRAPPER}} .about_info .section_title h3 span' => 'color: {{VALUE}};', 184 | '{{WRAPPER}} .about_area .about_info .info_inner ul li::before' => 'color: {{VALUE}};', 185 | '{{WRAPPER}} .about_area .about_info .info_inner .customer_info .single_info > span' => 'color: {{VALUE}};', 186 | ], 187 | ] 188 | ); 189 | 190 | $this->end_controls_section(); 191 | 192 | } 193 | 194 | protected function render() { 195 | $settings = $this->get_settings(); 196 | $sec_img = !empty( $settings['sec_img']['url'] ) ? $settings['sec_img']['url'] : ''; 197 | $exp_val = !empty( $settings['exp_val'] ) ? $settings['exp_val'] : ''; 198 | $exp_label = !empty( $settings['exp_label'] ) ? $settings['exp_label'] : ''; 199 | $sec_title = !empty( $settings['sec_title'] ) ? $settings['sec_title'] : ''; 200 | $text = !empty( $settings['text'] ) ? $settings['text'] : ''; 201 | $item1_counter = !empty( $settings['item1_counter'] ) ? $settings['item1_counter'] : ''; 202 | $item1_text = !empty( $settings['item1_text'] ) ? $settings['item1_text'] : ''; 203 | $item2_counter = !empty( $settings['item2_counter'] ) ? $settings['item2_counter'] : ''; 204 | $item2_text = !empty( $settings['item2_text'] ) ? $settings['item2_text'] : ''; 205 | ?> 206 | 207 | 208 |
209 |
210 |
211 |
212 |
> 213 |
214 |
215 | '.esc_html($exp_val).''; 218 | } 219 | if ( $exp_label ) { 220 | echo '

'.esc_html($exp_label).'

'; 221 | } 222 | ?> 223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 | '.wp_kses_post(nl2br($sec_title)).''; 233 | } 234 | ?> 235 |
236 | 237 | 238 |
239 |
240 |
241 | '.wp_kses_post(nl2br($text)).'

'; 244 | } 245 | ?> 246 |
247 |
248 | '.esc_html($item1_counter).''; 251 | } 252 | if ( $item1_text ) { 253 | echo '

'.esc_html($item1_text).'

'; 254 | } 255 | ?> 256 |
257 |
258 | '.esc_html($item2_counter).'+'; 261 | } 262 | if ( $item2_text ) { 263 | echo '

'.esc_html($item2_text).'

'; 264 | } 265 | ?> 266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 | 275 | start_controls_section( 48 | 'facilities_content', 49 | [ 50 | 'label' => __( 'Facilities content', 'hus-companion' ), 51 | ] 52 | ); 53 | $this->add_control( 54 | 'sec_bg', 55 | [ 56 | 'label' => esc_html__( 'Section BG', 'hus-companion' ), 57 | 'description' => esc_html__( 'Best size is 1920x464', 'hus-companion' ), 58 | 'type' => Controls_Manager::MEDIA, 59 | 'label_block' => true, 60 | ] 61 | ); 62 | $this->add_control( 63 | 'sec_title', 64 | [ 65 | 'label' => esc_html__( 'Section Title', 'hus-companion' ), 66 | 'type' => Controls_Manager::TEXT, 67 | 'label_block' => true, 68 | 'default' => esc_html__( 'Our Facilities', 'hus-companion' ), 69 | ] 70 | ); 71 | 72 | $this->add_control( 73 | 'facilities_settings_seperator', 74 | [ 75 | 'label' => esc_html__( 'Facilities', 'hus-companion' ), 76 | 'type' => Controls_Manager::HEADING, 77 | 'separator' => 'after' 78 | ] 79 | ); 80 | 81 | $this->add_control( 82 | 'facilities', [ 83 | 'label' => __( 'Create New', 'hus-companion' ), 84 | 'type' => Controls_Manager::REPEATER, 85 | 'title_field' => '{{{ item_title }}}', 86 | 'fields' => [ 87 | [ 88 | 'name' => 'item_icon', 89 | 'label' => __( 'Select Icon', 'hus-companion' ), 90 | 'label_block' => true, 91 | 'type' => Controls_Manager::SELECT, 92 | 'default' => 'flaticon-sketch', 93 | 'options' => hus_themify_icon() 94 | ], 95 | [ 96 | 'name' => 'item_title', 97 | 'label' => __( 'Title', 'hus-companion' ), 98 | 'label_block' => true, 99 | 'type' => Controls_Manager::TEXT, 100 | 'default' => __( 'Planning Stage', 'hus-companion' ), 101 | ], 102 | [ 103 | 'name' => 'text', 104 | 'label' => __( 'Text', 'hus-companion' ), 105 | 'label_block' => true, 106 | 'type' => Controls_Manager::TEXTAREA, 107 | 'default' => __( 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.', 'hus-companion' ), 108 | ], 109 | [ 110 | 'name' => 'anchor_title', 111 | 'label' => __( 'Anchor Title', 'hus-companion' ), 112 | 'label_block' => true, 113 | 'type' => Controls_Manager::TEXT, 114 | 'default' => __( 'Learn more', 'hus-companion' ), 115 | ], 116 | [ 117 | 'name' => 'anchor_url', 118 | 'label' => __( 'Anchor URL', 'hus-companion' ), 119 | 'label_block' => true, 120 | 'type' => Controls_Manager::URL, 121 | ], 122 | ], 123 | 'default' => [ 124 | [ 125 | 'item_icon' => 'flaticon-sketch', 126 | 'item_title' => __( 'Planning Stage', 'hus-companion' ), 127 | 'text' => __( 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.', 'hus-companion' ), 128 | 'anchor_title' => __( 'Learn more', 'hus-companion' ), 129 | ], 130 | [ 131 | 'item_icon' => 'flaticon-hotel', 132 | 'item_title' => __( 'Planing Stage', 'hus-companion' ), 133 | 'text' => __( 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.', 'hus-companion' ), 134 | 'anchor_title' => __( 'Learn more', 'hus-companion' ), 135 | ], 136 | [ 137 | 'item_icon' => 'flaticon-headset', 138 | 'item_title' => __( 'Support Section', 'hus-companion' ), 139 | 'text' => __( 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.', 'hus-companion' ), 140 | 'anchor_title' => __( 'Learn more', 'hus-companion' ), 141 | ], 142 | ] 143 | ] 144 | ); 145 | $this->end_controls_section(); // End facilities content 146 | 147 | /** 148 | * Style Tab 149 | * ------------------------------ Style Section Heading ------------------------------ 150 | * 151 | */ 152 | 153 | $this->start_controls_section( 154 | 'style_room_section', [ 155 | 'label' => __( 'Style Facilities Section', 'hus-companion' ), 156 | 'tab' => Controls_Manager::TAB_STYLE, 157 | ] 158 | ); 159 | $this->add_control( 160 | 'big_title_col', [ 161 | 'label' => __( 'Section Title Color', 'hus-companion' ), 162 | 'type' => Controls_Manager::COLOR, 163 | 'selectors' => [ 164 | '{{WRAPPER}} .our_facilitics_area .section_title h3' => 'color: {{VALUE}};', 165 | ], 166 | ] 167 | ); 168 | 169 | $this->add_control( 170 | 'single_item_styles_seperator', 171 | [ 172 | 'label' => esc_html__( 'Single Item Styles', 'hus-companion' ), 173 | 'type' => Controls_Manager::HEADING, 174 | 'separator' => 'after' 175 | ] 176 | ); 177 | $this->add_control( 178 | 'icon_col', [ 179 | 'label' => __( 'Icon Color', 'hus-companion' ), 180 | 'type' => Controls_Manager::COLOR, 181 | 'selectors' => [ 182 | '{{WRAPPER}} .our_facilitics_area .single_feature .icon i' => 'color: {{VALUE}};', 183 | ], 184 | ] 185 | ); 186 | $this->add_control( 187 | 'hover_icon_col', [ 188 | 'label' => __( 'On Hover Item Icon Color', 'hus-companion' ), 189 | 'type' => Controls_Manager::COLOR, 190 | 'selectors' => [ 191 | '{{WRAPPER}} .our_facilitics_area .single_feature:hover .icon i' => 'color: {{VALUE}} !important;', 192 | ], 193 | ] 194 | ); 195 | $this->add_control( 196 | 'title_col', [ 197 | 'label' => __( 'Title Color', 'hus-companion' ), 198 | 'type' => Controls_Manager::COLOR, 199 | 'selectors' => [ 200 | '{{WRAPPER}} .our_facilitics_area .single_feature h3' => 'color: {{VALUE}};', 201 | ], 202 | ] 203 | ); 204 | $this->add_control( 205 | 'text_col', [ 206 | 'label' => __( 'Text Color', 'hus-companion' ), 207 | 'type' => Controls_Manager::COLOR, 208 | 'selectors' => [ 209 | '{{WRAPPER}} .our_facilitics_area .single_feature p' => 'color: {{VALUE}};', 210 | ], 211 | ] 212 | ); 213 | $this->add_control( 214 | 'anchor_txt_color', [ 215 | 'label' => __( 'Anchor Text Color', 'hus-companion' ), 216 | 'type' => Controls_Manager::COLOR, 217 | 'selectors' => [ 218 | '{{WRAPPER}} .our_facilitics_area .single_feature a' => 'color: {{VALUE}};', 219 | ], 220 | ] 221 | ); 222 | $this->end_controls_section(); 223 | 224 | } 225 | 226 | protected function render() { 227 | $settings = $this->get_settings(); 228 | $sec_bg = !empty( $settings['sec_bg']['url'] ) ? $settings['sec_bg']['url'] : ''; 229 | $sec_title = !empty( $settings['sec_title'] ) ? $settings['sec_title'] : ''; 230 | $facilities = !empty( $settings['facilities'] ) ? $settings['facilities'] : ''; 231 | $dynamic_class = ! is_front_page() ? ' facilites_page' : ''; 232 | $dynamic_title_class = is_front_page() ? ' white_title' : ''; 233 | ?> 234 | 235 | 240 | 241 | 242 |
243 |
244 |
245 |
246 |
247 | '.esc_html( $sec_title ).''; 250 | } 251 | ?> 252 |
253 | 254 | 255 |
256 |
257 |
258 |
259 |
260 | 0 ) { 262 | foreach( $facilities as $item ) { 263 | $item_icon = $item['item_icon'] ? $item['item_icon'] : ''; 264 | $item_title = ( !empty( $item['item_title'] ) ) ? $item['item_title'] : ''; 265 | $text = ( !empty( $item['text'] ) ) ? $item['text'] : ''; 266 | $anchor_title = ( !empty( $item['anchor_title'] ) ) ? $item['anchor_title'] : ''; 267 | $anchor_url = ( !empty( $item['anchor_url']['url'] ) ) ? $item['anchor_url']['url'] : ''; 268 | ?> 269 |
270 |
271 |
272 | 273 |
274 | '.esc_html( $item_title ).''; 277 | } 278 | if ( $text ) { 279 | echo '

'.wp_kses_post( $text ).'

'; 280 | } 281 | if ( $anchor_title ) { 282 | echo ''.esc_html( $anchor_title ).''; 283 | } 284 | ?> 285 |
286 |
287 | 291 |
292 |
293 |
294 | 295 | esc_html__( 'Add footer contact info', 'hus-companion' ), ) 34 | ); 35 | 36 | } 37 | 38 | // This is where the action happens 39 | public function widget( $args, $instance ) { 40 | 41 | $title = apply_filters( 'widget_contactinfo_title', $instance['title'] ); 42 | $addressicon = apply_filters( 'widget_contactinfo_addressicon', $instance['addressicon'] ); 43 | $address = apply_filters( 'widget_contactinfo_address', $instance['address'] ); 44 | $pnumbericon = apply_filters( 'widget_contactinfo_pnumbericon', $instance['pnumbericon'] ); 45 | $pnumber = apply_filters( 'widget_contactinfo_pnumber', $instance['pnumber'] ); 46 | $emailicon = apply_filters( 'widget_contactinfo_emailicon', $instance['emailicon'] ); 47 | $email = apply_filters( 'widget_contactinfo_email', $instance['email'] ); 48 | 49 | // before and after widget arguments are defined by themes 50 | echo wp_kses_post( $args['before_widget'] ); 51 | if ( ! empty( $title ) ) 52 | echo wp_kses_post( $args['before_title'] . $title . $args['after_title'] ); 53 | 54 | 55 | ?> 56 | 59 | '; 69 | 70 | } 71 | // 72 | if( $address ){ 73 | echo hus_paragraph_tag( 74 | array( 75 | 'text' => wp_kses_post( $address ) 76 | ) 77 | ); 78 | } 79 | ?> 80 | 81 | 87 | '; 97 | 98 | } 99 | // 100 | if( $pnumber ){ 101 | echo hus_heading_tag( 102 | array( 103 | 'tag' => 'h2', 104 | 'text' => wp_kses_post( $pnumber ) 105 | ) 106 | 107 | ); 108 | } 109 | ?> 110 | 111 | 116 | 117 | '; 127 | 128 | } 129 | // 130 | if( $email ){ 131 | echo hus_heading_tag( 132 | array( 133 | 'tag' => 'h2', 134 | 'text' => wp_kses_post( $email ) 135 | ) 136 | ); 137 | } 138 | ?> 139 | 140 | 143 | 201 |

202 | 203 | 204 |

205 |

206 | 207 |

208 |
209 | 210 | /> 211 | 212 | > 213 |
214 | 215 | 216 | 217 | /> 218 | 219 | 220 | 221 |
222 |
223 |

224 |

225 | 226 | 227 |

228 | 229 |

230 | 231 |

232 |
233 | 234 | /> 235 | 236 | > 237 |
238 | 239 | 240 | 241 | /> 242 | 243 | 244 | 245 |
246 |
247 |

248 |

249 | 250 | 251 |

252 | 253 |

254 | 255 |

256 |
257 | 258 | /> 259 | 260 | > 261 |
262 | 263 | 264 | 265 | /> 266 | 267 | 268 | 269 |
270 |
271 |

272 |

273 | 274 | 275 |

276 | 277 | 310 | 378 |