Changeset 3332499
- Timestamp:
- 07/22/2025 08:16:36 PM (7 months ago)
- Location:
- havenlytics
- Files:
-
- 86 added
- 9 edited
-
assets/banner-1544x500.jpg (added)
-
assets/banner-772x250.jpg (modified) (previous)
-
tags/1.0.6 (added)
-
tags/1.0.6/admin (added)
-
tags/1.0.6/admin/assets (added)
-
tags/1.0.6/admin/assets/css (added)
-
tags/1.0.6/admin/assets/css/havenlytics-metabox.css (added)
-
tags/1.0.6/admin/assets/css/leaflet (added)
-
tags/1.0.6/admin/assets/css/leaflet/leaflet.css (added)
-
tags/1.0.6/admin/assets/js (added)
-
tags/1.0.6/admin/assets/js/havenlytics-metabox.js (added)
-
tags/1.0.6/admin/assets/js/leaflet (added)
-
tags/1.0.6/admin/assets/js/leaflet/leaflet.js (added)
-
tags/1.0.6/admin/class-admin-assets.php (added)
-
tags/1.0.6/havenlytics.php (added)
-
tags/1.0.6/includes (added)
-
tags/1.0.6/includes/class-init.php (added)
-
tags/1.0.6/includes/class-meta-fields.php (added)
-
tags/1.0.6/includes/class-post-type.php (added)
-
tags/1.0.6/includes/functions-core.php (added)
-
tags/1.0.6/languages (added)
-
tags/1.0.6/languages/havenlytics.pot (added)
-
tags/1.0.6/public (added)
-
tags/1.0.6/public/assets (added)
-
tags/1.0.6/public/assets/css (added)
-
tags/1.0.6/public/assets/css/havenlytics-property-featured-carousel.css (added)
-
tags/1.0.6/public/assets/css/havenlytics-property-grid.css (added)
-
tags/1.0.6/public/assets/css/havenlytics-property-list.css (added)
-
tags/1.0.6/public/assets/css/havenlytics-property-popups.css (added)
-
tags/1.0.6/public/assets/css/havenlytics-property-related-carousel.css (added)
-
tags/1.0.6/public/assets/css/havenlytics-property-single.css (added)
-
tags/1.0.6/public/assets/css/havenlytics-property-video.css (added)
-
tags/1.0.6/public/assets/css/havenlytics-root-style.css (added)
-
tags/1.0.6/public/assets/img (added)
-
tags/1.0.6/public/assets/img/layers-2x.png (added)
-
tags/1.0.6/public/assets/img/layers.png (added)
-
tags/1.0.6/public/assets/img/marker-icon.png (added)
-
tags/1.0.6/public/assets/img/no-thumb.png (added)
-
tags/1.0.6/public/assets/img/video-placeholder.png (added)
-
tags/1.0.6/public/assets/js (added)
-
tags/1.0.6/public/assets/js/havenlytics-frontend-popups.js (added)
-
tags/1.0.6/public/assets/js/havenlytics-frontend-scripts.js (added)
-
tags/1.0.6/public/assets/js/havenlytics-map.js (added)
-
tags/1.0.6/public/assets/plugins (added)
-
tags/1.0.6/public/assets/plugins/bootstrap (added)
-
tags/1.0.6/public/assets/plugins/bootstrap/css (added)
-
tags/1.0.6/public/assets/plugins/bootstrap/css/bootstrap.min.css (added)
-
tags/1.0.6/public/assets/plugins/bootstrap/css/leaflet.css (added)
-
tags/1.0.6/public/assets/plugins/bootstrap/js (added)
-
tags/1.0.6/public/assets/plugins/bootstrap/js/bootstrap.bundle.min.js (added)
-
tags/1.0.6/public/assets/plugins/bootstrap/js/leaflet.js (added)
-
tags/1.0.6/public/assets/plugins/fontawesome (added)
-
tags/1.0.6/public/assets/plugins/fontawesome/css (added)
-
tags/1.0.6/public/assets/plugins/fontawesome/css/all.min.css (added)
-
tags/1.0.6/public/assets/plugins/fontawesome/css/fontawesome.min.css (added)
-
tags/1.0.6/public/assets/plugins/fontawesome/webfonts (added)
-
tags/1.0.6/public/assets/plugins/fontawesome/webfonts/fa-brands-400.ttf (added)
-
tags/1.0.6/public/assets/plugins/fontawesome/webfonts/fa-brands-400.woff2 (added)
-
tags/1.0.6/public/assets/plugins/fontawesome/webfonts/fa-regular-400.ttf (added)
-
tags/1.0.6/public/assets/plugins/fontawesome/webfonts/fa-regular-400.woff2 (added)
-
tags/1.0.6/public/assets/plugins/fontawesome/webfonts/fa-solid-900.ttf (added)
-
tags/1.0.6/public/assets/plugins/fontawesome/webfonts/fa-solid-900.woff2 (added)
-
tags/1.0.6/public/assets/plugins/fontawesome/webfonts/fa-v4compatibility.ttf (added)
-
tags/1.0.6/public/assets/plugins/fontawesome/webfonts/fa-v4compatibility.woff2 (added)
-
tags/1.0.6/public/assets/plugins/leaflet (added)
-
tags/1.0.6/public/assets/plugins/leaflet/css (added)
-
tags/1.0.6/public/assets/plugins/leaflet/css/leaflet.css (added)
-
tags/1.0.6/public/assets/plugins/leaflet/js (added)
-
tags/1.0.6/public/assets/plugins/leaflet/js/leaflet.js (added)
-
tags/1.0.6/public/assets/plugins/owl.carouse (added)
-
tags/1.0.6/public/assets/plugins/owl.carouse/css (added)
-
tags/1.0.6/public/assets/plugins/owl.carouse/css/owl.carousel.min.css (added)
-
tags/1.0.6/public/assets/plugins/owl.carouse/js (added)
-
tags/1.0.6/public/assets/plugins/owl.carouse/js/owl.carousel.min.js (added)
-
tags/1.0.6/public/assets/plugins/theia-sticky-sidebar (added)
-
tags/1.0.6/public/assets/plugins/theia-sticky-sidebar/ResizeSensor.js (added)
-
tags/1.0.6/public/assets/plugins/theia-sticky-sidebar/theia-sticky-sidebar.js (added)
-
tags/1.0.6/public/class-frontend-assets.php (added)
-
tags/1.0.6/public/class-frontend.php (added)
-
tags/1.0.6/readme.txt (added)
-
tags/1.0.6/templates (added)
-
tags/1.0.6/templates/hvnly_property-single.php (added)
-
tags/1.0.6/templates/property-card-grid.php (added)
-
tags/1.0.6/templates/property-card-list.php (added)
-
tags/1.0.6/templates/property-card.php (added)
-
tags/1.0.6/uninstall.php (added)
-
trunk/admin/assets/css/havenlytics-metabox.css (modified) (1 diff)
-
trunk/admin/assets/js/havenlytics-metabox.js (modified) (1 diff)
-
trunk/havenlytics.php (modified) (2 diffs)
-
trunk/includes/class-meta-fields.php (modified) (23 diffs)
-
trunk/public/assets/css/havenlytics-property-featured-carousel.css (added)
-
trunk/public/assets/js/havenlytics-frontend-scripts.js (modified) (1 diff)
-
trunk/public/class-frontend-assets.php (modified) (1 diff)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/templates/hvnly_property-single.php (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
havenlytics/trunk/admin/assets/css/havenlytics-metabox.css
r3325794 r3332499 864 864 margin-top: 8px; 865 865 } 866 867 868 869 /* Featured Toggle */ 870 .havenlytics_property_featured .havenlytics-featured-toggle { 871 position: relative; 872 display: inline-flex; 873 align-items: center; 874 gap: 10px; 875 cursor: pointer; 876 } 877 878 .havenlytics_property_featured .havenlytics-featured-toggle input { 879 opacity: 0; 880 width: 0; 881 height: 0; 882 position: absolute; 883 } 884 885 .havenlytics_property_featured .havenlytics-featured-slider { 886 position: relative; 887 display: inline-block; 888 width: 60px; 889 height: 30px; 890 background-color: var(--havenlytics-border, #E4E4ED); 891 transition: all var(--havenlytics-transitionTime); 892 border-radius: 34px; 893 box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); 894 } 895 896 .havenlytics_property_featured .havenlytics-featured-slider:before { 897 position: absolute; 898 content: ""; 899 height: 24px; 900 width: 24px; 901 left: 3px; 902 bottom: 3px; 903 background-color: var(--havenlytics-bg-white, #FFFFFF); 904 transition: all var(--havenlytics-transitionTime); 905 border-radius: 50%; 906 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); 907 z-index: 2; 908 } 909 910 /* Active state - Primary color */ 911 .havenlytics_property_featured input:checked+.havenlytics-featured-slider { 912 background-color: var(--havenlytics-primary, #6C60FE); 913 } 914 915 .havenlytics_property_featured input:checked+.havenlytics-featured-slider:before { 916 transform: translateX(30px); 917 background: var(--havenlytics-bg-white, #FFFFFF); 918 } 919 920 /* Hover state - Secondary color */ 921 .havenlytics_property_featured .havenlytics-featured-toggle:hover input:not(:checked)+.havenlytics-featured-slider { 922 background-color: var(--havenlytics-secondary, #764ba2); 923 } 924 925 .havenlytics_property_featured .havenlytics-featured-toggle:hover input:checked+.havenlytics-featured-slider { 926 background-color: var(--havenlytics-btnPrimaryHover, #5944f0); 927 } 928 929 /* Pulse animation using primary color */ 930 .havenlytics_property_featured input:checked+.havenlytics-featured-slider { 931 animation: havenlyticsFeaturedPulse 0.8s 1; 932 } 933 934 @keyframes havenlyticsFeaturedPulse { 935 0% { 936 box-shadow: 0 0 0 0 rgba(var(--havenlytics-primary-rgb), 0.5); 937 } 938 939 70% { 940 box-shadow: 0 0 0 10px rgba(var(--havenlytics-primary-rgb), 0); 941 } 942 943 100% { 944 box-shadow: 0 0 0 0 rgba(var(--havenlytics-primary-rgb), 0); 945 } 946 } 947 948 /* On/Off labels */ 949 .havenlytics_property_featured .havenlytics-featured-label { 950 display: flex; 951 font-size: var(--havenlytics-labelSize, 0.8rem); 952 font-weight: var(--havenlytics-fontWeight-medium, 500); 953 color: var(--havenlytics-text-secondary, #555); 954 } 955 956 .havenlytics_property_featured .havenlytics-featured-on { 957 color: var(--havenlytics-success, #00B46A); 958 display: none; 959 } 960 961 .havenlytics_property_featured .havenlytics-featured-off { 962 color: var(--havenlytics-alert, #FF4D4F); 963 } 964 965 .havenlytics_property_featured input:checked~.havenlytics-featured-label .havenlytics-featured-on { 966 display: inline; 967 } 968 969 .havenlytics_property_featured input:checked~.havenlytics-featured-label .havenlytics-featured-off { 970 display: none; 971 } 972 973 /* Bounce animation */ 974 .havenlytics_property_featured .havenlytics-toggle-animate .havenlytics-featured-slider:before { 975 animation: havenlyticsFeaturedBounce 0.4s; 976 } 977 978 @keyframes havenlyticsFeaturedBounce { 979 980 0%, 981 100% { 982 transform: translateX(var(--current-position)) translateX(0); 983 } 984 985 25% { 986 transform: translateX(var(--current-position)) translateX(5px); 987 } 988 989 50% { 990 transform: translateX(var(--current-position)) translateX(-5px); 991 } 992 993 75% { 994 transform: translateX(var(--current-position)) translateX(5px); 995 } 996 } 997 998 #havenlytics_property_featured button.handle-order-higher, 999 #havenlytics_property_featured button.handle-order-lower{display: none !important;} -
havenlytics/trunk/admin/assets/js/havenlytics-metabox.js
r3325794 r3332499 347 347 348 348 349 350 349 // Featured Toggle Animation js 350 // Convert primary color to RGB for pulse animation 351 function hexToRgb(hex) { 352 if (!hex) return null; 353 354 // Remove any leading # 355 hex = hex.replace(/^#/, ''); 356 357 // Parse the hex value 358 if (hex.length === 3) { 359 hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; 360 } 361 362 const num = parseInt(hex, 16); 363 return { 364 r: (num >> 16) & 255, 365 g: (num >> 8) & 255, 366 b: num & 255 367 }; 368 } 369 370 jQuery(document).ready(function($) { 371 // Get primary color RGB value 372 const primaryHex = getComputedStyle(document.documentElement).getPropertyValue('--havenlytics-primary') 373 .trim(); 374 const primaryRgb = hexToRgb(primaryHex || '#6C60FE'); 375 376 if (primaryRgb) { 377 const primaryRgbValue = `${primaryRgb.r}, ${primaryRgb.g}, ${primaryRgb.b}`; 378 // Add CSS variable for pulse animation 379 document.documentElement.style.setProperty('--havenlytics-primary-rgb', primaryRgbValue); 380 } 381 382 // Initialize slider positions 383 $('.havenlytics_property_featured .havenlytics-featured-toggle input').each(function() { 384 const slider = $(this).siblings('.havenlytics-featured-slider'); 385 const position = this.checked ? 30 : 0; 386 slider[0].style.setProperty('--current-position', position + 'px'); 387 }); 388 389 // Toggle interaction 390 $('.havenlytics_property_featured .havenlytics-featured-toggle input').on('change', function() { 391 const toggle = $(this).closest('.havenlytics-featured-toggle'); 392 const slider = $(this).siblings('.havenlytics-featured-slider'); 393 const position = this.checked ? 30 : 0; 394 395 // Update CSS variable for bounce animation 396 slider[0].style.setProperty('--current-position', position + 'px'); 397 398 // Add animation classes 399 toggle.addClass('havenlytics-toggle-animate'); 400 401 // Remove animation classes after effect completes 402 setTimeout(() => { 403 toggle.removeClass('havenlytics-toggle-animate'); 404 }, 400); 405 406 // Add pulse effect when checked 407 if (this.checked) { 408 slider.addClass('havenlytics-featured-pulse'); 409 setTimeout(() => { 410 slider.removeClass('havenlytics-featured-pulse'); 411 }, 800); 412 } 413 }); 414 }); 351 415 352 416 -
havenlytics/trunk/havenlytics.php
r3325794 r3332499 4 4 Plugin URI: https://wordpress.org/plugins/havenlytics/ 5 5 Description: A property listing plugin for WordPress that allows users to easily manage and display property listings. 6 Version: 1.0. 56 Version: 1.0.6 7 7 Author: Havenlytics 8 8 Author URI: https://havenlytics.com … … 30 30 31 31 // Define constants 32 define('HVNLY_PROPERTY_VERSION', '1.0. 5');32 define('HVNLY_PROPERTY_VERSION', '1.0.6'); 33 33 define('HVNLY_PROPERTY_URL', plugin_dir_url(__FILE__)); 34 34 define('HVNLY_PROPERTY_PATH', plugin_dir_path(__FILE__)); -
havenlytics/trunk/includes/class-meta-fields.php
r3325794 r3332499 116 116 'high' 117 117 ); 118 119 // Featured Property 120 add_meta_box( 121 'havenlytics_property_featured', 122 __('Active Featured', 'havenlytics'), 123 array(__CLASS__, 'havenlytics_render_featured_metabox'), 124 'hvnly_property', 125 'side', 126 'high' 127 ); 118 128 } 119 129 … … 128 138 129 139 ?> 130 <div class="havenlytics-meta-container">131 <div class="havenlytics-meta-field">132 <div class="havenlytics-meta-label">133 <label for="havenlytics_short_description"><?php esc_html_e('Short Description', 'havenlytics'); ?></label>134 135 </div>136 <div class="havenlytics-meta-input">137 <textarea style="height: 100px;" id="havenlytics_short_description" name="_havenlytics_short_description"138 class="havenlytics-large-text"><?php echo esc_textarea($short_description); ?></textarea>139 </div>140 </div>141 142 143 144 </div>145 <?php140 <div class="havenlytics-meta-container"> 141 <div class="havenlytics-meta-field"> 142 <div class="havenlytics-meta-label"> 143 <label for="havenlytics_short_description"><?php esc_html_e('Short Description', 'havenlytics'); ?></label> 144 145 </div> 146 <div class="havenlytics-meta-input"> 147 <textarea style="height: 100px;" id="havenlytics_short_description" name="_havenlytics_short_description" 148 class="havenlytics-large-text"><?php echo esc_textarea($short_description); ?></textarea> 149 </div> 150 </div> 151 152 153 154 </div> 155 <?php 146 156 } 147 157 … … 167 177 ); 168 178 ?> 169 <div class="havenlytics-meta-container">170 171 <div class="havenlytics-meta-field">172 <div class="havenlytics-meta-label">173 <label for="havenlytics_currency"><?php esc_html_e('Currency', 'havenlytics'); ?></label>174 </div>175 <div class="havenlytics-meta-input">176 <select id="havenlytics_currency" name="_havenlytics_currency">177 <option value=""><?php esc_html_e('Select Currency', 'havenlytics'); ?></option>178 <?php179 <div class="havenlytics-meta-container"> 180 181 <div class="havenlytics-meta-field"> 182 <div class="havenlytics-meta-label"> 183 <label for="havenlytics_currency"><?php esc_html_e('Currency', 'havenlytics'); ?></label> 184 </div> 185 <div class="havenlytics-meta-input"> 186 <select id="havenlytics_currency" name="_havenlytics_currency"> 187 <option value=""><?php esc_html_e('Select Currency', 'havenlytics'); ?></option> 188 <?php 179 189 $options = array( 180 190 'USD' => __('US Dollar', 'havenlytics'), … … 202 212 foreach ($options as $key => $label) : 203 213 ?> 204 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['currency'], $key); ?>>205 <?php echo esc_html($label); ?>206 </option>207 <?php endforeach; ?>208 </select>209 </div>210 </div>211 212 <div class="havenlytics-meta-field">213 <div class="havenlytics-meta-label">214 <label for="havenlytics_price"><?php esc_html_e('Price', 'havenlytics'); ?></label>215 216 </div>217 <div class="havenlytics-meta-input">218 <input type="text" id="havenlytics_price" name="_havenlytics_price"219 value="<?php echo esc_attr($values['price']); ?>" class="havenlytics-regular-text" />220 </div>221 </div>222 223 <div class="havenlytics-meta-field">224 <div class="havenlytics-meta-label">225 <label for="havenlytics_bedrooms"><?php esc_html_e('Bedrooms', 'havenlytics'); ?></label>226 </div>227 <div class="havenlytics-meta-input">228 <input type="number" id="havenlytics_bedrooms" name="_havenlytics_bedrooms"229 value="<?php echo esc_attr($values['bedrooms']); ?>" min="0" step="1" class="havenlytics-small-text" />230 </div>231 </div>232 233 <div class="havenlytics-meta-field">234 <div class="havenlytics-meta-label">235 <label for="havenlytics_bathrooms"><?php esc_html_e('Bathrooms', 'havenlytics'); ?></label>236 </div>237 <div class="havenlytics-meta-input">238 <input type="number" id="havenlytics_bathrooms" name="_havenlytics_bathrooms"239 value="<?php echo esc_attr($values['bathrooms']); ?>" min="0" step="0.5"240 class="havenlytics-small-text" />241 </div>242 </div>243 244 <div class="havenlytics-meta-field">245 <div class="havenlytics-meta-label">246 <label for="havenlytics_sqft"><?php esc_html_e('Square Footage', 'havenlytics'); ?></label>247 </div>248 249 <div class="havenlytics-meta-input">250 <input type="number" id="havenlytics_sqft" name="_havenlytics_sqft"251 value="<?php echo esc_attr($values['sqft']); ?>" min="0" step="1" class="havenlytics-regular-text" />252 </div>253 </div>254 255 <div class="havenlytics-meta-field">256 <div class="havenlytics-meta-label">257 <label for="havenlytics_address"><?php esc_html_e('Address', 'havenlytics'); ?></label>258 </div>259 <div class="havenlytics-meta-input">260 <input type="text" id="havenlytics_address" name="_havenlytics_address"261 value="<?php echo esc_attr($values['address']); ?>" class="havenlytics-large-text" />262 </div>263 </div>264 265 <div class="havenlytics-meta-field">266 <div class="havenlytics-meta-label">267 <label for="havenlytics_year_built"><?php esc_html_e('Year Built', 'havenlytics'); ?></label>268 </div>269 <div class="havenlytics-meta-input">270 <input type="number" id="havenlytics_year_built" name="_havenlytics_year_built"271 value="<?php echo esc_attr($values['year_built']); ?>" min="1800"272 max="<?php echo esc_attr(gmdate('Y')); ?>" class="havenlytics-small-text" />273 </div>274 275 276 </div>277 278 <div class="havenlytics-meta-field">279 <div class="havenlytics-meta-label">280 <label for="havenlytics_property_type"><?php esc_html_e('Property Type', 'havenlytics'); ?></label>281 </div>282 <div class="havenlytics-meta-input">283 <select id="havenlytics_property_type" name="_havenlytics_property_type">284 <option value=""><?php esc_html_e('Select Type', 'havenlytics'); ?></option>285 <?php214 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['currency'], $key); ?>> 215 <?php echo esc_html($label); ?> 216 </option> 217 <?php endforeach; ?> 218 </select> 219 </div> 220 </div> 221 222 <div class="havenlytics-meta-field"> 223 <div class="havenlytics-meta-label"> 224 <label for="havenlytics_price"><?php esc_html_e('Price', 'havenlytics'); ?></label> 225 226 </div> 227 <div class="havenlytics-meta-input"> 228 <input type="text" id="havenlytics_price" name="_havenlytics_price" 229 value="<?php echo esc_attr($values['price']); ?>" class="havenlytics-regular-text" /> 230 </div> 231 </div> 232 233 <div class="havenlytics-meta-field"> 234 <div class="havenlytics-meta-label"> 235 <label for="havenlytics_bedrooms"><?php esc_html_e('Bedrooms', 'havenlytics'); ?></label> 236 </div> 237 <div class="havenlytics-meta-input"> 238 <input type="number" id="havenlytics_bedrooms" name="_havenlytics_bedrooms" 239 value="<?php echo esc_attr($values['bedrooms']); ?>" min="0" step="1" class="havenlytics-small-text" /> 240 </div> 241 </div> 242 243 <div class="havenlytics-meta-field"> 244 <div class="havenlytics-meta-label"> 245 <label for="havenlytics_bathrooms"><?php esc_html_e('Bathrooms', 'havenlytics'); ?></label> 246 </div> 247 <div class="havenlytics-meta-input"> 248 <input type="number" id="havenlytics_bathrooms" name="_havenlytics_bathrooms" 249 value="<?php echo esc_attr($values['bathrooms']); ?>" min="0" step="0.5" 250 class="havenlytics-small-text" /> 251 </div> 252 </div> 253 254 <div class="havenlytics-meta-field"> 255 <div class="havenlytics-meta-label"> 256 <label for="havenlytics_sqft"><?php esc_html_e('Square Footage', 'havenlytics'); ?></label> 257 </div> 258 259 <div class="havenlytics-meta-input"> 260 <input type="number" id="havenlytics_sqft" name="_havenlytics_sqft" 261 value="<?php echo esc_attr($values['sqft']); ?>" min="0" step="1" class="havenlytics-regular-text" /> 262 </div> 263 </div> 264 265 <div class="havenlytics-meta-field"> 266 <div class="havenlytics-meta-label"> 267 <label for="havenlytics_address"><?php esc_html_e('Address', 'havenlytics'); ?></label> 268 </div> 269 <div class="havenlytics-meta-input"> 270 <input type="text" id="havenlytics_address" name="_havenlytics_address" 271 value="<?php echo esc_attr($values['address']); ?>" class="havenlytics-large-text" /> 272 </div> 273 </div> 274 275 <div class="havenlytics-meta-field"> 276 <div class="havenlytics-meta-label"> 277 <label for="havenlytics_year_built"><?php esc_html_e('Year Built', 'havenlytics'); ?></label> 278 </div> 279 <div class="havenlytics-meta-input"> 280 <input type="number" id="havenlytics_year_built" name="_havenlytics_year_built" 281 value="<?php echo esc_attr($values['year_built']); ?>" min="1800" 282 max="<?php echo esc_attr(gmdate('Y')); ?>" class="havenlytics-small-text" /> 283 </div> 284 285 286 </div> 287 288 <div class="havenlytics-meta-field"> 289 <div class="havenlytics-meta-label"> 290 <label for="havenlytics_property_type"><?php esc_html_e('Property Type', 'havenlytics'); ?></label> 291 </div> 292 <div class="havenlytics-meta-input"> 293 <select id="havenlytics_property_type" name="_havenlytics_property_type"> 294 <option value=""><?php esc_html_e('Select Type', 'havenlytics'); ?></option> 295 <?php 286 296 $property_types = array( 287 297 'single_family' => __('Single Family', 'havenlytics'), … … 294 304 foreach ($property_types as $key => $label) : 295 305 ?> 296 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['property_type'], $key); ?>>297 <?php echo esc_html($label); ?>298 </option>299 <?php endforeach; ?>300 </select>301 </div>302 </div>303 304 <div class="havenlytics-meta-field">305 <div class="havenlytics-meta-label">306 <label for="havenlytics_mls_number"><?php esc_html_e('MLS Number', 'havenlytics'); ?></label>307 </div>308 <div class="havenlytics-meta-input">309 <input type="text" id="havenlytics_mls_number" name="_havenlytics_mls_number"310 value="<?php echo esc_attr($values['mls_number']); ?>" class="havenlytics-regular-text" />311 </div>312 </div>313 314 <div class="havenlytics-meta-field">315 <div class="havenlytics-meta-label">316 <label for="havenlytics_garage"><?php esc_html_e('Garage Spaces', 'havenlytics'); ?></label>317 </div>318 <div class="havenlytics-meta-input">319 <input type="number" id="havenlytics_garage" name="_havenlytics_garage"320 value="<?php echo esc_attr($values['garage']); ?>" min="0" step="1" class="havenlytics-small-text" />321 </div>322 </div>323 324 <div class="havenlytics-meta-field">325 <div class="havenlytics-meta-label">326 <label for="havenlytics_status"><?php esc_html_e('Status', 'havenlytics'); ?></label>327 </div>328 <div class="havenlytics-meta-input">329 <select id="havenlytics_status" name="_havenlytics_status">330 <option value=""><?php esc_html_e('Select Status', 'havenlytics'); ?></option>331 <?php306 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['property_type'], $key); ?>> 307 <?php echo esc_html($label); ?> 308 </option> 309 <?php endforeach; ?> 310 </select> 311 </div> 312 </div> 313 314 <div class="havenlytics-meta-field"> 315 <div class="havenlytics-meta-label"> 316 <label for="havenlytics_mls_number"><?php esc_html_e('MLS Number', 'havenlytics'); ?></label> 317 </div> 318 <div class="havenlytics-meta-input"> 319 <input type="text" id="havenlytics_mls_number" name="_havenlytics_mls_number" 320 value="<?php echo esc_attr($values['mls_number']); ?>" class="havenlytics-regular-text" /> 321 </div> 322 </div> 323 324 <div class="havenlytics-meta-field"> 325 <div class="havenlytics-meta-label"> 326 <label for="havenlytics_garage"><?php esc_html_e('Garage Spaces', 'havenlytics'); ?></label> 327 </div> 328 <div class="havenlytics-meta-input"> 329 <input type="number" id="havenlytics_garage" name="_havenlytics_garage" 330 value="<?php echo esc_attr($values['garage']); ?>" min="0" step="1" class="havenlytics-small-text" /> 331 </div> 332 </div> 333 334 <div class="havenlytics-meta-field"> 335 <div class="havenlytics-meta-label"> 336 <label for="havenlytics_status"><?php esc_html_e('Status', 'havenlytics'); ?></label> 337 </div> 338 <div class="havenlytics-meta-input"> 339 <select id="havenlytics_status" name="_havenlytics_status"> 340 <option value=""><?php esc_html_e('Select Status', 'havenlytics'); ?></option> 341 <?php 332 342 $statuses = array( 333 343 'for_sale' => __('For Sale', 'havenlytics'), … … 339 349 foreach ($statuses as $key => $label) : 340 350 ?> 341 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['status'], $key); ?>>342 <?php echo esc_html($label); ?>343 </option>344 <?php endforeach; ?>345 </select>346 </div>347 </div>348 </div>349 <?php351 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['status'], $key); ?>> 352 <?php echo esc_html($label); ?> 353 </option> 354 <?php endforeach; ?> 355 </select> 356 </div> 357 </div> 358 </div> 359 <?php 350 360 } 351 361 … … 370 380 ); 371 381 ?> 372 <div class="havenlytics-meta-container">373 <div class="havenlytics-meta-field">374 <div class="havenlytics-meta-label">375 <label for="havenlytics_lot_size"><?php esc_html_e('Lot Size', 'havenlytics'); ?></label>376 </div>377 <div class="havenlytics-meta-input">378 <input type="text" id="havenlytics_lot_size" name="_havenlytics_lot_size"379 value="<?php echo esc_attr($values['lot_size']); ?>" class="havenlytics-small-text" />380 <select id="havenlytics_lot_unit" name="_havenlytics_lot_unit">381 <?php382 <div class="havenlytics-meta-container"> 383 <div class="havenlytics-meta-field"> 384 <div class="havenlytics-meta-label"> 385 <label for="havenlytics_lot_size"><?php esc_html_e('Lot Size', 'havenlytics'); ?></label> 386 </div> 387 <div class="havenlytics-meta-input"> 388 <input type="text" id="havenlytics_lot_size" name="_havenlytics_lot_size" 389 value="<?php echo esc_attr($values['lot_size']); ?>" class="havenlytics-small-text" /> 390 <select id="havenlytics_lot_unit" name="_havenlytics_lot_unit"> 391 <?php 382 392 $units = array( 383 393 'sqft' => __('Sq Ft', 'havenlytics'), … … 387 397 foreach ($units as $key => $label) : 388 398 ?> 389 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['lot_unit'], $key); ?>>390 <?php echo esc_html($label); ?>391 </option>392 <?php endforeach; ?>393 </select>394 </div>395 </div>396 397 <div class="havenlytics-meta-field">398 <div class="havenlytics-meta-label">399 <label for="havenlytics_hoa_fee"><?php esc_html_e('HOA Fee', 'havenlytics'); ?></label>400 </div>401 <div class="havenlytics-meta-input">402 <input type="text" id="havenlytics_hoa_fee" name="_havenlytics_hoa_fee"403 value="<?php echo esc_attr($values['hoa_fee']); ?>" class="havenlytics-small-text" />404 <select id="havenlytics_hoa_period" name="_havenlytics_hoa_period">405 <?php399 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['lot_unit'], $key); ?>> 400 <?php echo esc_html($label); ?> 401 </option> 402 <?php endforeach; ?> 403 </select> 404 </div> 405 </div> 406 407 <div class="havenlytics-meta-field"> 408 <div class="havenlytics-meta-label"> 409 <label for="havenlytics_hoa_fee"><?php esc_html_e('HOA Fee', 'havenlytics'); ?></label> 410 </div> 411 <div class="havenlytics-meta-input"> 412 <input type="text" id="havenlytics_hoa_fee" name="_havenlytics_hoa_fee" 413 value="<?php echo esc_attr($values['hoa_fee']); ?>" class="havenlytics-small-text" /> 414 <select id="havenlytics_hoa_period" name="_havenlytics_hoa_period"> 415 <?php 406 416 $periods = array( 407 417 'monthly' => __('Monthly', 'havenlytics'), … … 411 421 foreach ($periods as $key => $label) : 412 422 ?> 413 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['hoa_period'], $key); ?>>414 <?php echo esc_html($label); ?>415 </option>416 <?php endforeach; ?>417 </select>418 </div>419 </div>420 421 <div class="havenlytics-meta-field">422 <div class="havenlytics-meta-label">423 <label for="havenlytics_tax_amount"><?php esc_html_e('Annual Tax Amount', 'havenlytics'); ?></label>424 </div>425 <div class="havenlytics-meta-input">426 <input type="text" id="havenlytics_tax_amount" name="_havenlytics_tax_amount"427 value="<?php echo esc_attr($values['tax_amount']); ?>" class="havenlytics-regular-text" />428 </div>429 </div>430 431 <div class="havenlytics-meta-field">432 <div class="havenlytics-meta-label">433 <label for="havenlytics_tax_year"><?php esc_html_e('Tax Year', 'havenlytics'); ?></label>434 </div>435 <div class="havenlytics-meta-input">436 437 438 439 <input type="number" id="havenlytics_tax_year" name="_havenlytics_tax_year"440 value="<?php echo esc_attr($values['tax_year']); ?>" min="2000"441 max="<?php echo esc_attr(gmdate('Y')); ?>" class="havenlytics-small-text" />442 </div>443 </div>444 445 <div class="havenlytics-meta-field">446 <div class="havenlytics-meta-label">447 <label for="havenlytics_zoning"><?php esc_html_e('Zoning', 'havenlytics'); ?></label>448 </div>449 <div class="havenlytics-meta-input">450 <input type="text" id="havenlytics_zoning" name="_havenlytics_zoning"451 value="<?php echo esc_attr($values['zoning']); ?>" class="havenlytics-regular-text" />452 </div>453 </div>454 455 <div class="havenlytics-meta-field">456 <div class="havenlytics-meta-label">457 <label for="havenlytics_heating"><?php esc_html_e('Heating', 'havenlytics'); ?></label>458 </div>459 <div class="havenlytics-meta-input">460 <select id="havenlytics_heating" name="_havenlytics_heating">461 <option value=""><?php esc_html_e('Select Type', 'havenlytics'); ?></option>462 <?php423 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['hoa_period'], $key); ?>> 424 <?php echo esc_html($label); ?> 425 </option> 426 <?php endforeach; ?> 427 </select> 428 </div> 429 </div> 430 431 <div class="havenlytics-meta-field"> 432 <div class="havenlytics-meta-label"> 433 <label for="havenlytics_tax_amount"><?php esc_html_e('Annual Tax Amount', 'havenlytics'); ?></label> 434 </div> 435 <div class="havenlytics-meta-input"> 436 <input type="text" id="havenlytics_tax_amount" name="_havenlytics_tax_amount" 437 value="<?php echo esc_attr($values['tax_amount']); ?>" class="havenlytics-regular-text" /> 438 </div> 439 </div> 440 441 <div class="havenlytics-meta-field"> 442 <div class="havenlytics-meta-label"> 443 <label for="havenlytics_tax_year"><?php esc_html_e('Tax Year', 'havenlytics'); ?></label> 444 </div> 445 <div class="havenlytics-meta-input"> 446 447 448 449 <input type="number" id="havenlytics_tax_year" name="_havenlytics_tax_year" 450 value="<?php echo esc_attr($values['tax_year']); ?>" min="2000" 451 max="<?php echo esc_attr(gmdate('Y')); ?>" class="havenlytics-small-text" /> 452 </div> 453 </div> 454 455 <div class="havenlytics-meta-field"> 456 <div class="havenlytics-meta-label"> 457 <label for="havenlytics_zoning"><?php esc_html_e('Zoning', 'havenlytics'); ?></label> 458 </div> 459 <div class="havenlytics-meta-input"> 460 <input type="text" id="havenlytics_zoning" name="_havenlytics_zoning" 461 value="<?php echo esc_attr($values['zoning']); ?>" class="havenlytics-regular-text" /> 462 </div> 463 </div> 464 465 <div class="havenlytics-meta-field"> 466 <div class="havenlytics-meta-label"> 467 <label for="havenlytics_heating"><?php esc_html_e('Heating', 'havenlytics'); ?></label> 468 </div> 469 <div class="havenlytics-meta-input"> 470 <select id="havenlytics_heating" name="_havenlytics_heating"> 471 <option value=""><?php esc_html_e('Select Type', 'havenlytics'); ?></option> 472 <?php 463 473 $options = array( 464 474 'forced_air' => __('Forced Air', 'havenlytics'), … … 470 480 foreach ($options as $key => $label) : 471 481 ?> 472 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['heating'], $key); ?>>473 <?php echo esc_html($label); ?>474 </option>475 <?php endforeach; ?>476 </select>477 </div>478 </div>479 480 <div class="havenlytics-meta-field">481 <div class="havenlytics-meta-label">482 <label for="havenlytics_cooling"><?php esc_html_e('Cooling', 'havenlytics'); ?></label>483 </div>484 <div class="havenlytics-meta-input">485 <select id="havenlytics_cooling" name="_havenlytics_cooling">486 <option value=""><?php esc_html_e('Select Type', 'havenlytics'); ?></option>487 <?php482 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['heating'], $key); ?>> 483 <?php echo esc_html($label); ?> 484 </option> 485 <?php endforeach; ?> 486 </select> 487 </div> 488 </div> 489 490 <div class="havenlytics-meta-field"> 491 <div class="havenlytics-meta-label"> 492 <label for="havenlytics_cooling"><?php esc_html_e('Cooling', 'havenlytics'); ?></label> 493 </div> 494 <div class="havenlytics-meta-input"> 495 <select id="havenlytics_cooling" name="_havenlytics_cooling"> 496 <option value=""><?php esc_html_e('Select Type', 'havenlytics'); ?></option> 497 <?php 488 498 $options = array( 489 499 'central' => __('Central Air', 'havenlytics'), … … 494 504 foreach ($options as $key => $label) : 495 505 ?> 496 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['cooling'], $key); ?>>497 <?php echo esc_html($label); ?>498 </option>499 <?php endforeach; ?>500 </select>501 </div>502 </div>503 504 <div class="havenlytics-meta-field">505 <div class="havenlytics-meta-label">506 <label for="havenlytics_water"><?php esc_html_e('Water', 'havenlytics'); ?></label>507 </div>508 <div class="havenlytics-meta-input">509 <select id="havenlytics_water" name="_havenlytics_water">510 <option value=""><?php esc_html_e('Select Type', 'havenlytics'); ?></option>511 <?php506 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['cooling'], $key); ?>> 507 <?php echo esc_html($label); ?> 508 </option> 509 <?php endforeach; ?> 510 </select> 511 </div> 512 </div> 513 514 <div class="havenlytics-meta-field"> 515 <div class="havenlytics-meta-label"> 516 <label for="havenlytics_water"><?php esc_html_e('Water', 'havenlytics'); ?></label> 517 </div> 518 <div class="havenlytics-meta-input"> 519 <select id="havenlytics_water" name="_havenlytics_water"> 520 <option value=""><?php esc_html_e('Select Type', 'havenlytics'); ?></option> 521 <?php 512 522 $options = array( 513 523 'city' => __('City', 'havenlytics'), … … 517 527 foreach ($options as $key => $label) : 518 528 ?> 519 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['water'], $key); ?>>520 <?php echo esc_html($label); ?>521 </option>522 <?php endforeach; ?>523 </select>524 </div>525 </div>526 527 <div class="havenlytics-meta-field">528 <div class="havenlytics-meta-label">529 <label for="havenlytics_sewer"><?php esc_html_e('Sewer', 'havenlytics'); ?></label>530 </div>531 <div class="havenlytics-meta-input">532 <select id="havenlytics_sewer" name="_havenlytics_sewer">533 <option value=""><?php esc_html_e('Select Type', 'havenlytics'); ?></option>534 <?php529 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['water'], $key); ?>> 530 <?php echo esc_html($label); ?> 531 </option> 532 <?php endforeach; ?> 533 </select> 534 </div> 535 </div> 536 537 <div class="havenlytics-meta-field"> 538 <div class="havenlytics-meta-label"> 539 <label for="havenlytics_sewer"><?php esc_html_e('Sewer', 'havenlytics'); ?></label> 540 </div> 541 <div class="havenlytics-meta-input"> 542 <select id="havenlytics_sewer" name="_havenlytics_sewer"> 543 <option value=""><?php esc_html_e('Select Type', 'havenlytics'); ?></option> 544 <?php 535 545 $options = array( 536 546 'city' => __('City', 'havenlytics'), … … 539 549 foreach ($options as $key => $label) : 540 550 ?> 541 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['sewer'], $key); ?>>542 <?php echo esc_html($label); ?>543 </option>544 <?php endforeach; ?>545 </select>546 </div>547 </div>548 549 <div class="havenlytics-meta-field">550 <div class="havenlytics-meta-label">551 <label for="havenlytics_rating_star"><?php esc_html_e('Rating Star', 'havenlytics'); ?></label>552 </div>553 <div class="havenlytics-meta-input">554 <select id="havenlytics_rating_star" name="_havenlytics_rating_star">555 <option value=""><?php esc_html_e('Select Star', 'havenlytics'); ?></option>556 <?php551 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['sewer'], $key); ?>> 552 <?php echo esc_html($label); ?> 553 </option> 554 <?php endforeach; ?> 555 </select> 556 </div> 557 </div> 558 559 <div class="havenlytics-meta-field"> 560 <div class="havenlytics-meta-label"> 561 <label for="havenlytics_rating_star"><?php esc_html_e('Rating Star', 'havenlytics'); ?></label> 562 </div> 563 <div class="havenlytics-meta-input"> 564 <select id="havenlytics_rating_star" name="_havenlytics_rating_star"> 565 <option value=""><?php esc_html_e('Select Star', 'havenlytics'); ?></option> 566 <?php 557 567 $options = array( 558 568 '1' => __('1 Star', 'havenlytics'), … … 564 574 foreach ($options as $key => $label) : 565 575 ?> 566 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['rating_star'], $key); ?>>567 <?php echo esc_html($label); ?>568 </option>569 <?php endforeach; ?>570 </select>571 </div>572 </div>573 </div>574 <?php576 <option value="<?php echo esc_attr($key); ?>" <?php selected($values['rating_star'], $key); ?>> 577 <?php echo esc_html($label); ?> 578 </option> 579 <?php endforeach; ?> 580 </select> 581 </div> 582 </div> 583 </div> 584 <?php 575 585 } 576 586 … … 598 608 ); 599 609 ?> 600 <div class="havenlytics-meta-container">601 <div class="havenlytics-meta-field">602 <div class="havenlytics-meta-label">603 <label><?php esc_html_e('Features', 'havenlytics'); ?></label>604 </div>605 <div class="havenlytics-meta-input">606 <ul class="havenlytics-checkbox-list havenlytics-checkbox-columns">607 <?php foreach ($features as $key => $value) : ?>608 <li>609 <input type="checkbox" id="havenlytics_feature_<?php echo esc_attr($key); ?>"610 name="_havenlytics_feature_<?php echo esc_attr($key); ?>" value="1"611 <?php checked($value, '1'); ?> />612 <label for="havenlytics_feature_<?php echo esc_attr($key); ?>">613 <?php echo esc_html(ucfirst(str_replace('_', ' ', $key))); ?>614 </label>615 </li>616 <?php endforeach; ?>617 </ul>618 </div>619 </div>620 </div>621 <?php610 <div class="havenlytics-meta-container"> 611 <div class="havenlytics-meta-field"> 612 <div class="havenlytics-meta-label"> 613 <label><?php esc_html_e('Features', 'havenlytics'); ?></label> 614 </div> 615 <div class="havenlytics-meta-input"> 616 <ul class="havenlytics-checkbox-list havenlytics-checkbox-columns"> 617 <?php foreach ($features as $key => $value) : ?> 618 <li> 619 <input type="checkbox" id="havenlytics_feature_<?php echo esc_attr($key); ?>" 620 name="_havenlytics_feature_<?php echo esc_attr($key); ?>" value="1" 621 <?php checked($value, '1'); ?> /> 622 <label for="havenlytics_feature_<?php echo esc_attr($key); ?>"> 623 <?php echo esc_html(ucfirst(str_replace('_', ' ', $key))); ?> 624 </label> 625 </li> 626 <?php endforeach; ?> 627 </ul> 628 </div> 629 </div> 630 </div> 631 <?php 622 632 } 623 633 … … 640 650 641 651 ?> 642 <div class="havenlytics-meta-container">643 <div class="havenlytics-meta-field">644 <div class="havenlytics-meta-label">645 <label for="havenlytics_latitude"><?php esc_html_e('Latitude', 'havenlytics'); ?></label>646 </div>647 <div class="havenlytics-meta-input">648 <input type="text" id="havenlytics_latitude" name="_havenlytics_latitude"649 value="<?php echo esc_attr($values['latitude']); ?>" class="havenlytics-regular-text" />650 </div>651 </div>652 653 <div class="havenlytics-meta-field">654 <div class="havenlytics-meta-label">655 <label for="havenlytics_longitude"><?php esc_html_e('Longitude', 'havenlytics'); ?></label>656 </div>657 <div class="havenlytics-meta-input">658 <input type="text" id="havenlytics_longitude" name="_havenlytics_longitude"659 value="<?php echo esc_attr($values['longitude']); ?>" class="havenlytics-regular-text" />660 </div>661 </div>662 663 664 665 <div class="havenlytics-meta-field">666 <div class="havenlytics-meta-label">667 <label for="havenlytics_neighborhood"><?php esc_html_e('Neighborhood', 'havenlytics'); ?></label>668 </div>669 <div class="havenlytics-meta-input">670 <input type="text" id="havenlytics_neighborhood" name="_havenlytics_neighborhood"671 value="<?php echo esc_attr($values['neighborhood']); ?>" class="havenlytics-regular-text" />672 </div>673 </div>674 675 <div class="havenlytics-meta-field">676 <div class="havenlytics-meta-label">677 <label for="havenlytics_school_district"><?php esc_html_e('School District', 'havenlytics'); ?></label>678 </div>679 <div class="havenlytics-meta-input">680 <input type="text" id="havenlytics_school_district" name="_havenlytics_school_district"681 value="<?php echo esc_attr($values['school_district']); ?>" class="havenlytics-regular-text" />682 </div>683 </div>684 685 <div class="havenlytics-meta-field">686 <div class="havenlytics-meta-label">687 <label for="havenlytics_elementary_school"><?php esc_html_e('Elementary School', 'havenlytics'); ?></label>688 </div>689 <div class="havenlytics-meta-input">690 <input type="text" id="havenlytics_elementary_school" name="_havenlytics_elementary_school"691 value="<?php echo esc_attr($values['elementary_school']); ?>" class="havenlytics-regular-text" />692 </div>693 </div>694 695 <div class="havenlytics-meta-field">696 <div class="havenlytics-meta-label">697 <label for="havenlytics_middle_school"><?php esc_html_e('Middle School', 'havenlytics'); ?></label>698 </div>699 <div class="havenlytics-meta-input">700 <input type="text" id="havenlytics_middle_school" name="_havenlytics_middle_school"701 value="<?php echo esc_attr($values['middle_school']); ?>" class="havenlytics-regular-text" />702 </div>703 </div>704 705 <div class="havenlytics-meta-field">706 <div class="havenlytics-meta-label">707 <label for="havenlytics_high_school"><?php esc_html_e('High School', 'havenlytics'); ?></label>708 </div>709 <div class="havenlytics-meta-input">710 <input type="text" id="havenlytics_high_school" name="_havenlytics_high_school"711 value="<?php echo esc_attr($values['high_school']); ?>" class="havenlytics-regular-text" />712 </div>713 </div>714 715 <div class="havenlytics-meta-field">716 <div class="havenlytics-meta-label">717 <label for="havenlytics_walk_score"><?php esc_html_e('Walk Score', 'havenlytics'); ?></label>718 </div>719 <div class="havenlytics-meta-input">720 <input type="number" id="havenlytics_walk_score" name="_havenlytics_walk_score"721 value="<?php echo esc_attr($values['walk_score']); ?>" min="0" max="100"722 class="havenlytics-small-text" />723 </div>724 </div>725 </div>726 <?php652 <div class="havenlytics-meta-container"> 653 <div class="havenlytics-meta-field"> 654 <div class="havenlytics-meta-label"> 655 <label for="havenlytics_latitude"><?php esc_html_e('Latitude', 'havenlytics'); ?></label> 656 </div> 657 <div class="havenlytics-meta-input"> 658 <input type="text" id="havenlytics_latitude" name="_havenlytics_latitude" 659 value="<?php echo esc_attr($values['latitude']); ?>" class="havenlytics-regular-text" /> 660 </div> 661 </div> 662 663 <div class="havenlytics-meta-field"> 664 <div class="havenlytics-meta-label"> 665 <label for="havenlytics_longitude"><?php esc_html_e('Longitude', 'havenlytics'); ?></label> 666 </div> 667 <div class="havenlytics-meta-input"> 668 <input type="text" id="havenlytics_longitude" name="_havenlytics_longitude" 669 value="<?php echo esc_attr($values['longitude']); ?>" class="havenlytics-regular-text" /> 670 </div> 671 </div> 672 673 674 675 <div class="havenlytics-meta-field"> 676 <div class="havenlytics-meta-label"> 677 <label for="havenlytics_neighborhood"><?php esc_html_e('Neighborhood', 'havenlytics'); ?></label> 678 </div> 679 <div class="havenlytics-meta-input"> 680 <input type="text" id="havenlytics_neighborhood" name="_havenlytics_neighborhood" 681 value="<?php echo esc_attr($values['neighborhood']); ?>" class="havenlytics-regular-text" /> 682 </div> 683 </div> 684 685 <div class="havenlytics-meta-field"> 686 <div class="havenlytics-meta-label"> 687 <label for="havenlytics_school_district"><?php esc_html_e('School District', 'havenlytics'); ?></label> 688 </div> 689 <div class="havenlytics-meta-input"> 690 <input type="text" id="havenlytics_school_district" name="_havenlytics_school_district" 691 value="<?php echo esc_attr($values['school_district']); ?>" class="havenlytics-regular-text" /> 692 </div> 693 </div> 694 695 <div class="havenlytics-meta-field"> 696 <div class="havenlytics-meta-label"> 697 <label for="havenlytics_elementary_school"><?php esc_html_e('Elementary School', 'havenlytics'); ?></label> 698 </div> 699 <div class="havenlytics-meta-input"> 700 <input type="text" id="havenlytics_elementary_school" name="_havenlytics_elementary_school" 701 value="<?php echo esc_attr($values['elementary_school']); ?>" class="havenlytics-regular-text" /> 702 </div> 703 </div> 704 705 <div class="havenlytics-meta-field"> 706 <div class="havenlytics-meta-label"> 707 <label for="havenlytics_middle_school"><?php esc_html_e('Middle School', 'havenlytics'); ?></label> 708 </div> 709 <div class="havenlytics-meta-input"> 710 <input type="text" id="havenlytics_middle_school" name="_havenlytics_middle_school" 711 value="<?php echo esc_attr($values['middle_school']); ?>" class="havenlytics-regular-text" /> 712 </div> 713 </div> 714 715 <div class="havenlytics-meta-field"> 716 <div class="havenlytics-meta-label"> 717 <label for="havenlytics_high_school"><?php esc_html_e('High School', 'havenlytics'); ?></label> 718 </div> 719 <div class="havenlytics-meta-input"> 720 <input type="text" id="havenlytics_high_school" name="_havenlytics_high_school" 721 value="<?php echo esc_attr($values['high_school']); ?>" class="havenlytics-regular-text" /> 722 </div> 723 </div> 724 725 <div class="havenlytics-meta-field"> 726 <div class="havenlytics-meta-label"> 727 <label for="havenlytics_walk_score"><?php esc_html_e('Walk Score', 'havenlytics'); ?></label> 728 </div> 729 <div class="havenlytics-meta-input"> 730 <input type="number" id="havenlytics_walk_score" name="_havenlytics_walk_score" 731 value="<?php echo esc_attr($values['walk_score']); ?>" min="0" max="100" 732 class="havenlytics-small-text" /> 733 </div> 734 </div> 735 </div> 736 <?php 727 737 } 728 738 … … 736 746 $virtual_tour_url = get_post_meta($post->ID, '_havenlytics_virtual_tour', true); 737 747 ?> 738 <div class="havenlytics-meta-container havenlytics-meta-container-virtual-tour">739 <div class="havenlytics-meta-field">740 <div class="havenlytics-meta-label">741 <label for="havenlytics_virtual_tour"><?php esc_html_e('Virtual Tour URL', 'havenlytics'); ?></label>742 </div>743 <div class="havenlytics-meta-input">744 <input type="url" id="havenlytics_virtual_tour" name="_havenlytics_virtual_tour"745 value="<?php echo esc_url($virtual_tour_url); ?>" class="widefat" placeholder="https://" />746 <p class="description">747 <?php esc_html_e('Enter URL for Matterport, YouTube, or other virtual tour service', 'havenlytics'); ?>748 </p>749 </div>750 </div>751 </div>752 <?php748 <div class="havenlytics-meta-container havenlytics-meta-container-virtual-tour"> 749 <div class="havenlytics-meta-field"> 750 <div class="havenlytics-meta-label"> 751 <label for="havenlytics_virtual_tour"><?php esc_html_e('Virtual Tour URL', 'havenlytics'); ?></label> 752 </div> 753 <div class="havenlytics-meta-input"> 754 <input type="url" id="havenlytics_virtual_tour" name="_havenlytics_virtual_tour" 755 value="<?php echo esc_url($virtual_tour_url); ?>" class="widefat" placeholder="https://" /> 756 <p class="description"> 757 <?php esc_html_e('Enter URL for Matterport, YouTube, or other virtual tour service', 'havenlytics'); ?> 758 </p> 759 </div> 760 </div> 761 </div> 762 <?php 753 763 } 754 764 … … 770 780 $hav_property_custom_video_thumbnail = get_post_meta($post->ID, '_havenlytics_property_custom_video_thumbnail', true); 771 781 ?> 772 <div class="havenlytics-video-metabox"> 773 <!-- Video Type Selector --> 774 <div class="havenlytics-meta-container havenlytics-meta-container-select"> 775 <div class="havenlytics-meta-field"> 776 <div class="havenlytics-meta-label"> 777 <label 778 for="havenlytics_property_video_type"><?php esc_html_e('Select Video Type', 'havenlytics'); ?></label> 779 </div> 780 <div class="havenlytics-meta-input"> 781 <select id="havenlytics_property_video_type" name="_havenlytics_property_video_type" class="widefat"> 782 <option value="youtube" <?php selected($hav_property_video_type, 'youtube'); ?>>YouTube</option> 783 <option value="vimeo" <?php selected($hav_property_video_type, 'vimeo'); ?>>Vimeo</option> 784 <option value="custom" <?php selected($hav_property_video_type, 'custom'); ?>>Upload MP4</option> 785 </select> 786 </div> 782 <div class="havenlytics-video-metabox"> 783 <!-- Video Type Selector --> 784 <div class="havenlytics-meta-container havenlytics-meta-container-select"> 785 <div class="havenlytics-meta-field"> 786 <div class="havenlytics-meta-label"> 787 <label 788 for="havenlytics_property_video_type"><?php esc_html_e('Select Video Type', 'havenlytics'); ?></label> 789 </div> 790 <div class="havenlytics-meta-input"> 791 <select id="havenlytics_property_video_type" name="_havenlytics_property_video_type" class="widefat"> 792 <option value="youtube" <?php selected($hav_property_video_type, 'youtube'); ?>>YouTube</option> 793 <option value="vimeo" <?php selected($hav_property_video_type, 'vimeo'); ?>>Vimeo</option> 794 <option value="custom" <?php selected($hav_property_video_type, 'custom'); ?>>Upload MP4</option> 795 </select> 796 </div> 797 </div> 798 </div> 799 800 <!-- YouTube Fields --> 801 <div class="havenlytics-meta-container havenlytics-meta-container-youtube"> 802 <div class="havenlytics-meta-field"> 803 <div class="havenlytics-meta-label"> 804 <label 805 for="havenlytics_property_youtube_title"><?php esc_html_e('Video Title', 'havenlytics'); ?></label> 806 </div> 807 <div class="havenlytics-meta-input"> 808 <input type="text" id="havenlytics_property_youtube_title" name="_havenlytics_property_youtube_title" 809 value="<?php echo esc_attr($hav_property_youtube_title); ?>" class="widefat" /> 810 <p class="description"><?php esc_html_e('Optional title for the video', 'havenlytics'); ?></p> 811 </div> 812 </div> 813 814 <div class="havenlytics-meta-field"> 815 <div class="havenlytics-meta-label"> 816 <label 817 for="havenlytics_property_youtube_url"><?php esc_html_e('YouTube Video URL', 'havenlytics'); ?></label> 818 </div> 819 <div class="havenlytics-meta-input"> 820 <input type="url" id="havenlytics_property_youtube_url" name="_havenlytics_property_youtube_url" 821 value="<?php echo esc_url($hav_property_youtube_url); ?>" class="widefat" 822 placeholder="https://www.youtube.com/watch?v=..." /> 823 <p class="description"> 824 <?php esc_html_e('Enter the full YouTube video URL with ID or only the ID example here:AWovHEZcpQU', 'havenlytics'); ?> 825 </p> 826 </div> 827 </div> 828 829 <div class="havenlytics-meta-field"> 830 <div class="havenlytics-meta-label"> 831 <label 832 for="havenlytics_property_youtube_thumbnail"><?php esc_html_e('YouTube Video Thumbnail', 'havenlytics'); ?></label> 833 </div> 834 <div class="havenlytics-meta-input"> 835 <input type="text" id="havenlytics_property_youtube_thumbnail" 836 name="_havenlytics_property_youtube_thumbnail" 837 value="<?php echo esc_url($hav_property_youtube_thumbnail); ?>" class="widefat" /> 838 <div class="havenlytics-preview-container"> 839 <?php if ($hav_property_youtube_thumbnail) : ?> 840 <div class="havenlytics-preview-wrapper"> 841 <img src="<?php echo esc_url($hav_property_youtube_thumbnail); ?>" alt="Thumbnail preview"> 842 <button type="button" class="havenlytics-remove-preview" 843 data-target="#havenlytics_property_youtube_thumbnail"> 844 <span class="dashicons dashicons-no-alt"></span> 845 </button> 787 846 </div> 847 <?php endif; ?> 788 848 </div> 789 790 <!-- YouTube Fields --> 791 <div class="havenlytics-meta-container havenlytics-meta-container-youtube"> 792 <div class="havenlytics-meta-field"> 793 <div class="havenlytics-meta-label"> 794 <label 795 for="havenlytics_property_youtube_title"><?php esc_html_e('Video Title', 'havenlytics'); ?></label> 796 </div> 797 <div class="havenlytics-meta-input"> 798 <input type="text" id="havenlytics_property_youtube_title" name="_havenlytics_property_youtube_title" 799 value="<?php echo esc_attr($hav_property_youtube_title); ?>" class="widefat" /> 800 <p class="description"><?php esc_html_e('Optional title for the video', 'havenlytics'); ?></p> 801 </div> 849 <button class="button havenlytics-upload-button" data-target="#havenlytics_property_youtube_thumbnail" 850 data-type="image"> 851 <?php esc_html_e('Upload Thumbnail', 'havenlytics'); ?> 852 </button> 853 </div> 854 </div> 855 </div> 856 857 <!-- Vimeo Fields --> 858 <div class="havenlytics-meta-container havenlytics-meta-container-vimeo"> 859 <div class="havenlytics-meta-field"> 860 <div class="havenlytics-meta-label"> 861 <label 862 for="havenlytics_property_vimeo_url"><?php esc_html_e('Vimeo Video URL', 'havenlytics'); ?></label> 863 </div> 864 <div class="havenlytics-meta-input"> 865 <input type="url" id="havenlytics_property_vimeo_url" name="_havenlytics_property_vimeo_url" 866 value="<?php echo esc_url($hav_property_vimeo_url); ?>" class="widefat" 867 placeholder="https://vimeo.com/..." /> 868 <p class="description"><?php esc_html_e('Enter the full Vimeo video URL', 'havenlytics'); ?></p> 869 </div> 870 </div> 871 872 <div class="havenlytics-meta-field"> 873 <div class="havenlytics-meta-label"> 874 <label 875 for="havenlytics_property_vimeo_thumbnail"><?php esc_html_e('Vimeo Video Thumbnail', 'havenlytics'); ?></label> 876 </div> 877 <div class="havenlytics-meta-input"> 878 <input type="text" id="havenlytics_property_vimeo_thumbnail" 879 name="_havenlytics_property_vimeo_thumbnail" 880 value="<?php echo esc_url($hav_property_vimeo_thumbnail); ?>" class="widefat" /> 881 <div class="havenlytics-preview-container"> 882 <?php if ($hav_property_vimeo_thumbnail) : ?> 883 <div class="havenlytics-preview-wrapper"> 884 <img src="<?php echo esc_url($hav_property_vimeo_thumbnail); ?>" alt="Thumbnail preview"> 885 <button type="button" class="havenlytics-remove-preview" 886 data-target="#havenlytics_property_vimeo_thumbnail"> 887 <span class="dashicons dashicons-no-alt"></span> 888 </button> 802 889 </div> 803 804 <div class="havenlytics-meta-field"> 805 <div class="havenlytics-meta-label"> 806 <label 807 for="havenlytics_property_youtube_url"><?php esc_html_e('YouTube Video URL', 'havenlytics'); ?></label> 808 </div> 809 <div class="havenlytics-meta-input"> 810 <input type="url" id="havenlytics_property_youtube_url" name="_havenlytics_property_youtube_url" 811 value="<?php echo esc_url($hav_property_youtube_url); ?>" class="widefat" 812 placeholder="https://www.youtube.com/watch?v=..." /> 813 <p class="description"> 814 <?php esc_html_e('Enter the full YouTube video URL with ID or only the ID example here:AWovHEZcpQU', 'havenlytics'); ?> 815 </p> 816 </div> 890 <?php endif; ?> 891 </div> 892 <button class="button havenlytics-upload-button" data-target="#havenlytics_property_vimeo_thumbnail" 893 data-type="image"> 894 <?php esc_html_e('Upload Thumbnail', 'havenlytics'); ?> 895 </button> 896 </div> 897 </div> 898 </div> 899 900 <!-- Custom MP4 Fields --> 901 <div class="havenlytics-meta-container havenlytics-meta-container-custom"> 902 <div class="havenlytics-meta-field"> 903 <div class="havenlytics-meta-label"> 904 <label 905 for="havenlytics_property_custom_video"><?php esc_html_e('Upload MP4 Video', 'havenlytics'); ?></label> 906 </div> 907 <div class="havenlytics-meta-input"> 908 <input type="text" id="havenlytics_property_custom_video" name="_havenlytics_property_custom_video" 909 value="<?php echo esc_url($hav_property_custom_video); ?>" class="widefat" /> 910 <div class="havenlytics-preview-container"> 911 <?php if ($hav_property_custom_video) : ?> 912 <div class="havenlytics-preview-wrapper"> 913 <video controls> 914 <source src="<?php echo esc_url($hav_property_custom_video); ?>" type="video/mp4"> 915 </video> 916 <button type="button" class="havenlytics-remove-preview" 917 data-target="#havenlytics_property_custom_video"> 918 <span class="dashicons dashicons-no-alt"></span> 919 </button> 817 920 </div> 818 819 <div class="havenlytics-meta-field">820 <div class="havenlytics-meta-label">821 <label822 for="havenlytics_property_youtube_thumbnail"><?php esc_html_e('YouTube Video Thumbnail', 'havenlytics'); ?></label>823 </div>824 <div class="havenlytics-meta-input">825 <input type="text" id="havenlytics_property_youtube_thumbnail"826 name="_havenlytics_property_youtube_thumbnail" 827 value="<?php echo esc_url($hav_property_youtube_thumbnail); ?>" class="widefat" />828 <div class="havenlytics-preview-container">829 <?php if ($hav_property_youtube_thumbnail) : ?>830 <div class="havenlytics-preview-wrapper">831 <img src="<?php echo esc_url($hav_property_youtube_thumbnail); ?>" alt="Thumbnail preview">832 <button type="button" class="havenlytics-remove-preview"833 data-target="#havenlytics_property_youtube_thumbnail">834 <span class="dashicons dashicons-no-alt"></span>835 </button>836 </div>837 <?php endif;?>838 </div>839 <button class="button havenlytics-upload-button" data-target="#havenlytics_property_youtube_thumbnail"840 data-type="image">841 <?php esc_html_e('Upload Thumbnail', 'havenlytics'); ?>842 < /button>843 </ div>921 <?php endif; ?> 922 </div> 923 <button class="button havenlytics-upload-button" data-target="#havenlytics_property_custom_video" 924 data-type="video"> 925 <?php esc_html_e('Upload Video', 'havenlytics'); ?> 926 </button> 927 </div> 928 </div> 929 930 <div class="havenlytics-meta-field"> 931 <div class="havenlytics-meta-label"> 932 <label 933 for="havenlytics_property_custom_video_thumbnail"><?php esc_html_e('Custom Video Thumbnail', 'havenlytics'); ?></label> 934 </div> 935 <div class="havenlytics-meta-input"> 936 <input type="text" id="havenlytics_property_custom_video_thumbnail" 937 name="_havenlytics_property_custom_video_thumbnail" 938 value="<?php echo esc_url($hav_property_custom_video_thumbnail); ?>" class="widefat" /> 939 <div class="havenlytics-preview-container"> 940 <?php if ($hav_property_custom_video_thumbnail) : ?> 941 <div class="havenlytics-preview-wrapper"> 942 <img src="<?php echo esc_url($hav_property_custom_video_thumbnail); ?>" alt="Thumbnail preview"> 943 <button type="button" class="havenlytics-remove-preview" 944 data-target="#havenlytics_property_custom_video_thumbnail"> 945 <span class="dashicons dashicons-no-alt"></span> 946 </button> 844 947 </div> 948 <?php endif; ?> 845 949 </div> 846 847 <!-- Vimeo Fields --> 848 <div class="havenlytics-meta-container havenlytics-meta-container-vimeo"> 849 <div class="havenlytics-meta-field"> 850 <div class="havenlytics-meta-label"> 851 <label 852 for="havenlytics_property_vimeo_url"><?php esc_html_e('Vimeo Video URL', 'havenlytics'); ?></label> 853 </div> 854 <div class="havenlytics-meta-input"> 855 <input type="url" id="havenlytics_property_vimeo_url" name="_havenlytics_property_vimeo_url" 856 value="<?php echo esc_url($hav_property_vimeo_url); ?>" class="widefat" 857 placeholder="https://vimeo.com/..." /> 858 <p class="description"><?php esc_html_e('Enter the full Vimeo video URL', 'havenlytics'); ?></p> 859 </div> 860 </div> 861 862 <div class="havenlytics-meta-field"> 863 <div class="havenlytics-meta-label"> 864 <label 865 for="havenlytics_property_vimeo_thumbnail"><?php esc_html_e('Vimeo Video Thumbnail', 'havenlytics'); ?></label> 866 </div> 867 <div class="havenlytics-meta-input"> 868 <input type="text" id="havenlytics_property_vimeo_thumbnail" 869 name="_havenlytics_property_vimeo_thumbnail" 870 value="<?php echo esc_url($hav_property_vimeo_thumbnail); ?>" class="widefat" /> 871 <div class="havenlytics-preview-container"> 872 <?php if ($hav_property_vimeo_thumbnail) : ?> 873 <div class="havenlytics-preview-wrapper"> 874 <img src="<?php echo esc_url($hav_property_vimeo_thumbnail); ?>" alt="Thumbnail preview"> 875 <button type="button" class="havenlytics-remove-preview" 876 data-target="#havenlytics_property_vimeo_thumbnail"> 877 <span class="dashicons dashicons-no-alt"></span> 878 </button> 879 </div> 880 <?php endif; ?> 881 </div> 882 <button class="button havenlytics-upload-button" data-target="#havenlytics_property_vimeo_thumbnail" 883 data-type="image"> 884 <?php esc_html_e('Upload Thumbnail', 'havenlytics'); ?> 885 </button> 886 </div> 887 </div> 888 </div> 889 890 <!-- Custom MP4 Fields --> 891 <div class="havenlytics-meta-container havenlytics-meta-container-custom"> 892 <div class="havenlytics-meta-field"> 893 <div class="havenlytics-meta-label"> 894 <label 895 for="havenlytics_property_custom_video"><?php esc_html_e('Upload MP4 Video', 'havenlytics'); ?></label> 896 </div> 897 <div class="havenlytics-meta-input"> 898 <input type="text" id="havenlytics_property_custom_video" name="_havenlytics_property_custom_video" 899 value="<?php echo esc_url($hav_property_custom_video); ?>" class="widefat" /> 900 <div class="havenlytics-preview-container"> 901 <?php if ($hav_property_custom_video) : ?> 902 <div class="havenlytics-preview-wrapper"> 903 <video controls> 904 <source src="<?php echo esc_url($hav_property_custom_video); ?>" type="video/mp4"> 905 </video> 906 <button type="button" class="havenlytics-remove-preview" 907 data-target="#havenlytics_property_custom_video"> 908 <span class="dashicons dashicons-no-alt"></span> 909 </button> 910 </div> 911 <?php endif; ?> 912 </div> 913 <button class="button havenlytics-upload-button" data-target="#havenlytics_property_custom_video" 914 data-type="video"> 915 <?php esc_html_e('Upload Video', 'havenlytics'); ?> 916 </button> 917 </div> 918 </div> 919 920 <div class="havenlytics-meta-field"> 921 <div class="havenlytics-meta-label"> 922 <label 923 for="havenlytics_property_custom_video_thumbnail"><?php esc_html_e('Custom Video Thumbnail', 'havenlytics'); ?></label> 924 </div> 925 <div class="havenlytics-meta-input"> 926 <input type="text" id="havenlytics_property_custom_video_thumbnail" 927 name="_havenlytics_property_custom_video_thumbnail" 928 value="<?php echo esc_url($hav_property_custom_video_thumbnail); ?>" class="widefat" /> 929 <div class="havenlytics-preview-container"> 930 <?php if ($hav_property_custom_video_thumbnail) : ?> 931 <div class="havenlytics-preview-wrapper"> 932 <img src="<?php echo esc_url($hav_property_custom_video_thumbnail); ?>" alt="Thumbnail preview"> 933 <button type="button" class="havenlytics-remove-preview" 934 data-target="#havenlytics_property_custom_video_thumbnail"> 935 <span class="dashicons dashicons-no-alt"></span> 936 </button> 937 </div> 938 <?php endif; ?> 939 </div> 940 <button class="button havenlytics-upload-button" 941 data-target="#havenlytics_property_custom_video_thumbnail" data-type="image"> 942 <?php esc_html_e('Upload Thumbnail', 'havenlytics'); ?> 943 </button> 944 </div> 945 </div> 946 </div> 947 </div> 948 949 950 951 <?php 950 <button class="button havenlytics-upload-button" 951 data-target="#havenlytics_property_custom_video_thumbnail" data-type="image"> 952 <?php esc_html_e('Upload Thumbnail', 'havenlytics'); ?> 953 </button> 954 </div> 955 </div> 956 </div> 957 </div> 958 959 960 961 <?php 952 962 } 953 963 … … 969 979 ?> 970 980 971 <!-- Book Property -->972 <div class="havenlytics-meta-container havenlytics_property_amenities havenlytics-meta-container-book">973 <div class="havenlytics-meta-field">974 <div class="havenlytics-meta-label">975 <label976 for="havenlytics_property_book_property"><?php esc_html_e('Book Property (Shortcode)', 'havenlytics'); ?></label>977 </div>978 <div class="havenlytics-meta-input">979 <input type="text" id="havenlytics_property_book_property" name="_havenlytics_property_book_property"980 class="widefat" value="<?php echo esc_attr($book_property); ?>"981 placeholder="[contact-form-7 id='123']" />982 983 <?php981 <!-- Book Property --> 982 <div class="havenlytics-meta-container havenlytics_property_amenities havenlytics-meta-container-book"> 983 <div class="havenlytics-meta-field"> 984 <div class="havenlytics-meta-label"> 985 <label 986 for="havenlytics_property_book_property"><?php esc_html_e('Book Property (Shortcode)', 'havenlytics'); ?></label> 987 </div> 988 <div class="havenlytics-meta-input"> 989 <input type="text" id="havenlytics_property_book_property" name="_havenlytics_property_book_property" 990 class="widefat" value="<?php echo esc_attr($book_property); ?>" 991 placeholder="[contact-form-7 id='123']" /> 992 993 <?php 984 994 $cf7_forms = get_posts([ 985 995 'post_type' => 'wpcf7_contact_form', … … 988 998 989 999 if (!empty($cf7_forms)) : ?> 990 <select class="widefat"991 onchange="document.getElementById('havenlytics_property_book_property').value = this.value;">992 <option value=""><?php esc_html_e('Select a Contact Form…', 'havenlytics'); ?></option>993 <?php foreach ($cf7_forms as $form) :1000 <select class="widefat" 1001 onchange="document.getElementById('havenlytics_property_book_property').value = this.value;"> 1002 <option value=""><?php esc_html_e('Select a Contact Form…', 'havenlytics'); ?></option> 1003 <?php foreach ($cf7_forms as $form) : 994 1004 $shortcode = '[contact-form-7 id="' . esc_attr($form->ID) . '"]'; 995 1005 $selected = selected($book_property, $shortcode, false); 996 1006 ?> 997 <option value="<?php echo esc_attr($shortcode); ?>" <?php echo esc_attr($selected); ?>>998 <?php echo esc_html($form->post_title); ?>999 </option>1000 <?php endforeach; ?>1001 </select>1002 <?php endif; ?>1003 </div>1004 1005 1006 1007 1008 </div>1009 1010 <div class="havenlytics-meta-field">1011 <div class="havenlytics-meta-label">1012 <label1013 for="havenlytics_property_virtual_tour"><?php esc_html_e('Virtual Tour URL', 'havenlytics'); ?></label>1014 </div>1015 <div class="havenlytics-meta-input">1016 <input type="url" id="havenlytics_property_virtual_tour" name="_havenlytics_property_virtual_tour"1017 class="widefat" value="<?php echo esc_url($virtual_tour); ?>" placeholder="https://" />1018 <p class="description">1019 <?php esc_html_e('Enter URL for Matterport, YouTube, or other virtual tour service', 'havenlytics'); ?>1020 </p>1021 </div>1022 </div>1023 1024 <!-- Floorplan Image -->1025 <div class="havenlytics-meta-field">1026 <div class="havenlytics-meta-label">1027 <label1028 for="havenlytics_property_floorplan_img"><?php esc_html_e('Floorplan Image URL', 'havenlytics'); ?></label>1029 </div>1030 <div class="havenlytics-meta-input havenlytics-popup-meta-input">1031 <input type="url" id="havenlytics_property_floorplan_img" name="_havenlytics_property_floorplan_img"1032 class="widefat" value="<?php echo esc_url($floorplan_img); ?>" />1033 <button type="button" class="button havenlytics-popup-upload-button"1034 data-target="#havenlytics_property_floorplan_img" data-type="image">1035 <?php esc_html_e('Upload Image', 'havenlytics'); ?>1036 </button>1037 1038 <div class="havenlytics-popup-preview-container"></div>1039 </div>1040 </div>1041 1042 <!-- Brochure PDF -->1043 <div class="havenlytics-meta-field">1044 <div class="havenlytics-meta-label">1045 <label1046 for="havenlytics_property_brochure_pdf"><?php esc_html_e('Brochure PDF URL', 'havenlytics'); ?></label>1047 </div>1048 <div class="havenlytics-meta-input havenlytics-popup-meta-input">1049 <input type="url" id="havenlytics_property_brochure_pdf" name="_havenlytics_property_brochure_pdf"1050 class="widefat" value="<?php echo esc_url($brochure_pdf); ?>" />1051 <button type="button" class="button havenlytics-popup-upload-button"1052 data-target="#havenlytics_property_brochure_pdf" data-type="pdf">1053 <?php esc_html_e('Upload PDF', 'havenlytics'); ?>1054 </button>1055 <div class="havenlytics-popup-preview-container"></div>1056 </div>1057 </div>1058 1059 <!-- EPC PDF -->1060 <div class="havenlytics-meta-field">1061 <div class="havenlytics-meta-label">1062 <label for="havenlytics_property_epc_pdf"><?php esc_html_e('EPC PDF URL', 'havenlytics'); ?></label>1063 </div>1064 <div class="havenlytics-meta-input havenlytics-popup-meta-input">1065 <input type="url" id="havenlytics_property_epc_pdf" name="_havenlytics_property_epc_pdf" class="widefat"1066 value="<?php echo esc_url($epc_pdf); ?>" />1067 <button type="button" class="button havenlytics-popup-upload-button"1068 data-target="#havenlytics_property_epc_pdf" data-type="pdf">1069 <?php esc_html_e('Upload PDF', 'havenlytics'); ?>1070 </button>1071 <div class="havenlytics-popup-preview-container"></div>1072 </div>1073 </div>1074 1075 1076 <div class="havenlytics-meta-field">1077 <div class="havenlytics-meta-label">1078 <label for="havenlytics_property_map_url"><?php esc_html_e('Google Map URL', 'havenlytics'); ?></label>1079 </div>1080 <div class="havenlytics-meta-input">1081 <input type="url" id="havenlytics_property_map_url" name="_havenlytics_property_map_url" class="widefat"1082 value="<?php echo esc_url($map_url); ?>" placeholder="https://maps.google.com/..." />1083 </div>1084 </div>1085 1086 <div class="havenlytics-meta-field">1087 <div class="havenlytics-meta-label">1088 <label1089 for="havenlytics_property_request_call"><?php esc_html_e('Request Call Back (Shortcode)', 'havenlytics'); ?></label>1090 </div>1091 <div class="havenlytics-meta-input">1092 <input type="text" id="havenlytics_property_request_call" name="_havenlytics_property_request_call"1093 class="widefat" value="<?php echo esc_attr($request_call); ?>"1094 placeholder="[contact-form-7 id='456']" />1095 1096 <?php1007 <option value="<?php echo esc_attr($shortcode); ?>" <?php echo esc_attr($selected); ?>> 1008 <?php echo esc_html($form->post_title); ?> 1009 </option> 1010 <?php endforeach; ?> 1011 </select> 1012 <?php endif; ?> 1013 </div> 1014 1015 1016 1017 1018 </div> 1019 1020 <div class="havenlytics-meta-field"> 1021 <div class="havenlytics-meta-label"> 1022 <label 1023 for="havenlytics_property_virtual_tour"><?php esc_html_e('Virtual Tour URL', 'havenlytics'); ?></label> 1024 </div> 1025 <div class="havenlytics-meta-input"> 1026 <input type="url" id="havenlytics_property_virtual_tour" name="_havenlytics_property_virtual_tour" 1027 class="widefat" value="<?php echo esc_url($virtual_tour); ?>" placeholder="https://" /> 1028 <p class="description"> 1029 <?php esc_html_e('Enter URL for Matterport, YouTube, or other virtual tour service', 'havenlytics'); ?> 1030 </p> 1031 </div> 1032 </div> 1033 1034 <!-- Floorplan Image --> 1035 <div class="havenlytics-meta-field"> 1036 <div class="havenlytics-meta-label"> 1037 <label 1038 for="havenlytics_property_floorplan_img"><?php esc_html_e('Floorplan Image URL', 'havenlytics'); ?></label> 1039 </div> 1040 <div class="havenlytics-meta-input havenlytics-popup-meta-input"> 1041 <input type="url" id="havenlytics_property_floorplan_img" name="_havenlytics_property_floorplan_img" 1042 class="widefat" value="<?php echo esc_url($floorplan_img); ?>" /> 1043 <button type="button" class="button havenlytics-popup-upload-button" 1044 data-target="#havenlytics_property_floorplan_img" data-type="image"> 1045 <?php esc_html_e('Upload Image', 'havenlytics'); ?> 1046 </button> 1047 1048 <div class="havenlytics-popup-preview-container"></div> 1049 </div> 1050 </div> 1051 1052 <!-- Brochure PDF --> 1053 <div class="havenlytics-meta-field"> 1054 <div class="havenlytics-meta-label"> 1055 <label 1056 for="havenlytics_property_brochure_pdf"><?php esc_html_e('Brochure PDF URL', 'havenlytics'); ?></label> 1057 </div> 1058 <div class="havenlytics-meta-input havenlytics-popup-meta-input"> 1059 <input type="url" id="havenlytics_property_brochure_pdf" name="_havenlytics_property_brochure_pdf" 1060 class="widefat" value="<?php echo esc_url($brochure_pdf); ?>" /> 1061 <button type="button" class="button havenlytics-popup-upload-button" 1062 data-target="#havenlytics_property_brochure_pdf" data-type="pdf"> 1063 <?php esc_html_e('Upload PDF', 'havenlytics'); ?> 1064 </button> 1065 <div class="havenlytics-popup-preview-container"></div> 1066 </div> 1067 </div> 1068 1069 <!-- EPC PDF --> 1070 <div class="havenlytics-meta-field"> 1071 <div class="havenlytics-meta-label"> 1072 <label for="havenlytics_property_epc_pdf"><?php esc_html_e('EPC PDF URL', 'havenlytics'); ?></label> 1073 </div> 1074 <div class="havenlytics-meta-input havenlytics-popup-meta-input"> 1075 <input type="url" id="havenlytics_property_epc_pdf" name="_havenlytics_property_epc_pdf" class="widefat" 1076 value="<?php echo esc_url($epc_pdf); ?>" /> 1077 <button type="button" class="button havenlytics-popup-upload-button" 1078 data-target="#havenlytics_property_epc_pdf" data-type="pdf"> 1079 <?php esc_html_e('Upload PDF', 'havenlytics'); ?> 1080 </button> 1081 <div class="havenlytics-popup-preview-container"></div> 1082 </div> 1083 </div> 1084 1085 1086 <div class="havenlytics-meta-field"> 1087 <div class="havenlytics-meta-label"> 1088 <label for="havenlytics_property_map_url"><?php esc_html_e('Google Map URL', 'havenlytics'); ?></label> 1089 </div> 1090 <div class="havenlytics-meta-input"> 1091 <input type="url" id="havenlytics_property_map_url" name="_havenlytics_property_map_url" class="widefat" 1092 value="<?php echo esc_url($map_url); ?>" placeholder="https://maps.google.com/..." /> 1093 </div> 1094 </div> 1095 1096 <div class="havenlytics-meta-field"> 1097 <div class="havenlytics-meta-label"> 1098 <label 1099 for="havenlytics_property_request_call"><?php esc_html_e('Request Call Back (Shortcode)', 'havenlytics'); ?></label> 1100 </div> 1101 <div class="havenlytics-meta-input"> 1102 <input type="text" id="havenlytics_property_request_call" name="_havenlytics_property_request_call" 1103 class="widefat" value="<?php echo esc_attr($request_call); ?>" 1104 placeholder="[contact-form-7 id='456']" /> 1105 1106 <?php 1097 1107 1098 1108 1099 1109 if (!empty($cf7_forms)) : ?> 1100 <select class="widefat"1101 onchange="document.getElementById('havenlytics_property_request_call').value = this.value;">1102 <option value=""><?php esc_html_e('Select a Contact Form…', 'havenlytics'); ?></option>1103 <?php foreach ($cf7_forms as $form) :1110 <select class="widefat" 1111 onchange="document.getElementById('havenlytics_property_request_call').value = this.value;"> 1112 <option value=""><?php esc_html_e('Select a Contact Form…', 'havenlytics'); ?></option> 1113 <?php foreach ($cf7_forms as $form) : 1104 1114 $shortcode = '[contact-form-7 id="' . esc_attr($form->ID) . '"]'; 1105 1115 $selected = selected($request_call, $shortcode, false); 1106 1116 ?> 1107 <option value="<?php echo esc_attr($shortcode); ?>" <?php echo esc_attr($selected); ?>>1108 <?php echo esc_html($form->post_title); ?>1109 </option>1110 <?php endforeach; ?>1111 </select>1112 <?php endif; ?>1113 </div>1114 </div>1115 1116 <div class="havenlytics-meta-field">1117 <div class="havenlytics-meta-label">1118 <label1119 for="havenlytics_property_arrange_view"><?php esc_html_e('Arrange Viewing (Shortcode)', 'havenlytics'); ?></label>1120 </div>1121 <div class="havenlytics-meta-input">1122 <input type="text" id="havenlytics_property_arrange_view" name="_havenlytics_property_arrange_view"1123 class="widefat" value="<?php echo esc_attr($arrange_view); ?>"1124 placeholder="[contact-form-7 id='789']" />1125 1126 <?php1117 <option value="<?php echo esc_attr($shortcode); ?>" <?php echo esc_attr($selected); ?>> 1118 <?php echo esc_html($form->post_title); ?> 1119 </option> 1120 <?php endforeach; ?> 1121 </select> 1122 <?php endif; ?> 1123 </div> 1124 </div> 1125 1126 <div class="havenlytics-meta-field"> 1127 <div class="havenlytics-meta-label"> 1128 <label 1129 for="havenlytics_property_arrange_view"><?php esc_html_e('Arrange Viewing (Shortcode)', 'havenlytics'); ?></label> 1130 </div> 1131 <div class="havenlytics-meta-input"> 1132 <input type="text" id="havenlytics_property_arrange_view" name="_havenlytics_property_arrange_view" 1133 class="widefat" value="<?php echo esc_attr($arrange_view); ?>" 1134 placeholder="[contact-form-7 id='789']" /> 1135 1136 <?php 1127 1137 if (!empty($cf7_forms)) : ?> 1128 <select class="widefat"1129 onchange="document.getElementById('havenlytics_property_arrange_view').value = this.value;">1130 <option value=""><?php esc_html_e('Select a Contact Form…', 'havenlytics'); ?></option>1131 <?php foreach ($cf7_forms as $form) :1138 <select class="widefat" 1139 onchange="document.getElementById('havenlytics_property_arrange_view').value = this.value;"> 1140 <option value=""><?php esc_html_e('Select a Contact Form…', 'havenlytics'); ?></option> 1141 <?php foreach ($cf7_forms as $form) : 1132 1142 $shortcode = '[contact-form-7 id="' . esc_attr($form->ID) . '"]'; 1133 1143 $selected = selected($arrange_view, $shortcode, false); 1134 1144 ?> 1135 <option value="<?php echo esc_attr($shortcode); ?>" <?php echo esc_attr($selected); ?>>1136 <?php echo esc_html($form->post_title); ?>1137 </option>1138 <?php endforeach; ?>1139 </select>1140 <?php endif; ?>1141 </div>1142 </div>1143 1144 </div>1145 1146 <?php1145 <option value="<?php echo esc_attr($shortcode); ?>" <?php echo esc_attr($selected); ?>> 1146 <?php echo esc_html($form->post_title); ?> 1147 </option> 1148 <?php endforeach; ?> 1149 </select> 1150 <?php endif; ?> 1151 </div> 1152 </div> 1153 1154 </div> 1155 1156 <?php 1147 1157 } 1148 1158 … … 1160 1170 $gallery_images = !empty($gallery_images) ? explode(',', $gallery_images) : array(); 1161 1171 ?> 1162 <div class="havenlytics-gallery-container">1163 <div class="havenlytics-gallery-instructions">1164 <?php esc_html_e('Add images to your property gallery. Drag to reorder.', 'havenlytics'); ?>1165 </div>1166 1167 <ul class="havenlytics-gallery-images" id="havenlytics-gallery-list">1168 <?php1172 <div class="havenlytics-gallery-container"> 1173 <div class="havenlytics-gallery-instructions"> 1174 <?php esc_html_e('Add images to your property gallery. Drag to reorder.', 'havenlytics'); ?> 1175 </div> 1176 1177 <ul class="havenlytics-gallery-images" id="havenlytics-gallery-list"> 1178 <?php 1169 1179 if (!empty($gallery_images)) : 1170 1180 foreach ($gallery_images as $image_id) : … … 1173 1183 $attachment = get_post($image_id); 1174 1184 ?> 1175 <li class="havenlytics-gallery-item" data-id="<?php echo esc_attr($image_id); ?>">1176 <img src="<?php echo esc_url($image[0]); ?>" alt="<?php echo esc_attr($attachment->post_title); ?>" />1177 <div class="havenlytics-gallery-item-actions">1178 <a href="#" class="havenlytics-gallery-edit" title="<?php esc_html_e('Edit Image', 'havenlytics'); ?>">1179 <span class="dashicons dashicons-edit"></span>1180 </a>1181 <a href="#" class="havenlytics-gallery-remove"1182 title="<?php esc_html_e('Remove Image', 'havenlytics'); ?>">1183 <span class="dashicons dashicons-no"></span>1184 </a>1185 </div>1186 <input type="hidden" name="havenlytics_gallery_title[]"1187 value="<?php echo esc_attr($attachment->post_title); ?>" />1188 <input type="hidden" name="havenlytics_gallery_caption[]"1189 value="<?php echo esc_attr($attachment->post_excerpt); ?>" />1190 </li>1191 <?php endif;1185 <li class="havenlytics-gallery-item" data-id="<?php echo esc_attr($image_id); ?>"> 1186 <img src="<?php echo esc_url($image[0]); ?>" alt="<?php echo esc_attr($attachment->post_title); ?>" /> 1187 <div class="havenlytics-gallery-item-actions"> 1188 <a href="#" class="havenlytics-gallery-edit" title="<?php esc_html_e('Edit Image', 'havenlytics'); ?>"> 1189 <span class="dashicons dashicons-edit"></span> 1190 </a> 1191 <a href="#" class="havenlytics-gallery-remove" 1192 title="<?php esc_html_e('Remove Image', 'havenlytics'); ?>"> 1193 <span class="dashicons dashicons-no"></span> 1194 </a> 1195 </div> 1196 <input type="hidden" name="havenlytics_gallery_title[]" 1197 value="<?php echo esc_attr($attachment->post_title); ?>" /> 1198 <input type="hidden" name="havenlytics_gallery_caption[]" 1199 value="<?php echo esc_attr($attachment->post_excerpt); ?>" /> 1200 </li> 1201 <?php endif; 1192 1202 endforeach; 1193 1203 endif; ?> 1194 </ul> 1195 1196 <input type="hidden" id="havenlytics_gallery" name="_havenlytics_gallery" 1197 value="<?php echo esc_attr(implode(',', $gallery_images)); ?>" /> 1198 1199 <div class="havenlytics-gallery-actions"> 1200 <button type="button" class="button button-primary havenlytics-add-gallery"> 1201 <span class="dashicons dashicons-plus"></span> 1202 <?php esc_html_e('Add Images', 'havenlytics'); ?> 1203 </button> 1204 1205 <button type="button" class="button havenlytics-clear-gallery"> 1206 <span class="dashicons dashicons-trash"></span> 1207 <?php esc_html_e('Clear Gallery', 'havenlytics'); ?> 1208 </button> 1209 </div> 1210 </div> 1204 </ul> 1205 1206 <input type="hidden" id="havenlytics_gallery" name="_havenlytics_gallery" 1207 value="<?php echo esc_attr(implode(',', $gallery_images)); ?>" /> 1208 1209 <div class="havenlytics-gallery-actions"> 1210 <button type="button" class="button button-primary havenlytics-add-gallery"> 1211 <span class="dashicons dashicons-plus"></span> 1212 <?php esc_html_e('Add Images', 'havenlytics'); ?> 1213 </button> 1214 1215 <button type="button" class="button havenlytics-clear-gallery"> 1216 <span class="dashicons dashicons-trash"></span> 1217 <?php esc_html_e('Clear Gallery', 'havenlytics'); ?> 1218 </button> 1219 </div> 1220 </div> 1221 <?php 1222 } 1223 1224 /** 1225 * Render featured metabox 1226 */ 1227 public static function havenlytics_render_featured_metabox($post) 1228 { 1229 $property_featured_item = get_post_meta($post->ID, '_havenlytics_property_featured_item', true); 1230 ?> 1231 <div class="havenlytics_property_featured"> 1232 <div class="havenlytics-meta-field"> 1233 <div class="havenlytics-meta-input"> 1234 <input type="hidden" name="havenlytics_property_featured_item" value="0"> 1235 <label class="havenlytics-featured-toggle"> 1236 <input type="checkbox" name="havenlytics_property_featured_item" value="1" 1237 <?php echo esc_attr(checked($property_featured_item, '1', false)); ?>> 1238 <span class="havenlytics-featured-slider"></span> 1239 <span class="havenlytics-featured-label"> 1240 <span class="havenlytics-featured-off"><?php esc_html_e('Off', 'havenlytics'); ?></span> 1241 <span class="havenlytics-featured-on"><?php esc_html_e('On', 'havenlytics'); ?></span> 1242 </span> 1243 </label> 1244 </div> 1245 </div> 1246 </div> 1211 1247 <?php 1212 1248 } … … 1397 1433 } 1398 1434 1435 // Featured property field 1436 if (isset($_POST['havenlytics_property_featured_item'])) { 1437 $featured_item = sanitize_text_field(wp_unslash($_POST['havenlytics_property_featured_item'])); 1438 update_post_meta($post_id, '_havenlytics_property_featured_item', $featured_item); 1439 } else { 1440 delete_post_meta($post_id, '_havenlytics_property_featured_item'); 1441 } 1442 1443 1399 1444 // Property Amenities 1400 1445 $fields = [ -
havenlytics/trunk/public/assets/js/havenlytics-frontend-scripts.js
r3325794 r3332499 584 584 } 585 585 586 // Property Featured Carousel 587 $(document).ready(function(){ 588 var $carousel = $('.havenlytics_carousel'); 589 var $dots = $('.havenlytics_dot'); 590 591 $carousel.owlCarousel({ 592 loop: true, 593 margin: 15, 594 nav: false, 595 dots: false, 596 autoplay: false, 597 autoplayTimeout: 5000, 598 autoplayHoverPause: true, 599 items: 1, 600 smartSpeed: 450 601 }); 602 603 // Custom navigation 604 $('.havenlytics_prev').click(function() { 605 $carousel.trigger('prev.owl.carousel'); 606 }); 607 608 $('.havenlytics_next').click(function() { 609 $carousel.trigger('next.owl.carousel'); 610 }); 611 612 // Update dots on change 613 $carousel.on('changed.owl.carousel', function(event) { 614 var current = event.item.index; 615 $dots.removeClass('active'); 616 $dots.eq(current % $dots.length).addClass('active'); 617 }); 618 619 // Click on dots 620 $dots.each(function(index) { 621 $(this).click(function() { 622 $carousel.trigger('to.owl.carousel', [index, 300]); 623 }); 624 }); 625 }); 586 626 587 627 -
havenlytics/trunk/public/class-frontend-assets.php
r3324509 r3332499 74 74 if (is_singular('hvnly_property')) { 75 75 76 // ✅ Property property-featured-carousel CSS 77 wp_enqueue_style( 78 'havenlytics-property-featured-carousel', 79 HVNLY_PROPERTY_URL . 'public/assets/css/havenlytics-property-featured-carousel.css', 80 [], 81 HVNLY_PROPERTY_VERSION 82 ); 76 83 // ✅ Property property-related-carousel CSS 77 84 wp_enqueue_style( -
havenlytics/trunk/readme.txt
r3325794 r3332499 6 6 Tested up to: 6.8 7 7 Requires PHP: 7.2 8 Stable tag: 1.0. 58 Stable tag: 1.0.6 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 139 139 == Changelog == 140 140 141 = 1.0.6 = 142 * Introduced dynamic rendering of featured properties in the single property widget carousel. 143 * Added option to enable or disable "Featured Property" for individual listings via the property edit screen. 144 * Pagination dots for the carousel now generate automatically based on the number of featured properties. 145 146 141 147 = 1.0.5 = 142 148 * Added feedback form link in plugin readme -
havenlytics/trunk/templates/hvnly_property-single.php
r3325794 r3332499 120 120 ?> 121 121 122 <div class="container">123 <!-- Property Gallery with Prefix -->124 <div class="havenlytics_property_single">125 <div class="property-gallery">126 <?php if (!empty($gallery_images)) : ?>127 <div class="gallery-main">128 <?php foreach ($gallery_images as $index => $image_id) : ?>129 <div class="gallery-slide <?php echo $index === 0 ? 'active' : ''; ?>"130 style="background-image: url('<?php echo esc_url(wp_get_attachment_image_url($image_id, 'large')); ?>')">131 </div>132 133 <?php endforeach; ?>134 135 <div class="gallery-counter">1/<?php echo count($gallery_images); ?></div>136 <div class="transition-indicator"></div>137 138 <div class="gallery-controls">139 <button class="gallery-btn prev-btn">140 <i class="fas fa-chevron-left"></i>141 </button>142 <button class="gallery-btn next-btn">143 <i class="fas fa-chevron-right"></i>144 </button>145 </div>146 </div>147 148 <div class="thumbnail-container">149 <?php foreach ($gallery_images as $index => $image_id) : ?>150 <div class="property-thumbnail <?php echo $index === 0 ? 'active' : ''; ?>"151 data-index="<?php echo esc_attr($index); ?>"152 style="background-image: url('<?php echo esc_url(wp_get_attachment_image_url($image_id, 'thumbnail')); ?>')">153 </div>154 <?php endforeach; ?>155 </div>156 157 <?php elseif (has_post_thumbnail($property_id)) : ?>158 <div class="gallery-main">159 <div class="gallery-slide active"160 style="background-image: url('<?php echo esc_url(get_the_post_thumbnail_url($property_id, 'large')); ?>')">161 </div>162 163 <div class="gallery-counter">1/1</div>164 <div class="transition-indicator"></div>165 166 <div class="gallery-controls">167 <button class="gallery-btn prev-btn">168 <i class="fas fa-chevron-left"></i>169 </button>170 <button class="gallery-btn next-btn">171 <i class="fas fa-chevron-right"></i>172 </button>173 </div>174 </div>175 176 <div class="thumbnail-container">177 <div class="property-thumbnail active" data-index="0"178 style="background-image: url('<?php echo esc_url(get_the_post_thumbnail_url($property_id, 'thumbnail')); ?>')">179 </div>180 </div>181 182 <?php else : ?>183 <div class="gallery-main">184 <div class="gallery-slide active"185 style="background-image: url('<?php echo esc_url(HVNLY_PROPERTY_URL . 'public/assets/img/no-thumb.png'); ?>')">186 </div>187 <div class="gallery-counter">0/0</div>188 </div>189 <?php endif; ?>190 </div>191 192 <!-- Property Header -->193 <div class="property-header">194 <div>195 <h1 class="property-title"><?php the_title(); ?></h1>196 <div class="property-address">197 <i class="fas fa-map-marker-alt"></i>198 <?php echo esc_html($address); ?>199 </div>200 <div class="property-uptodate">201 <i class="fas fa-calendar"></i>202 <?php122 <div class="container"> 123 <!-- Property Gallery with Prefix --> 124 <div class="havenlytics_property_single"> 125 <div class="property-gallery"> 126 <?php if (!empty($gallery_images)) : ?> 127 <div class="gallery-main"> 128 <?php foreach ($gallery_images as $index => $image_id) : ?> 129 <div class="gallery-slide <?php echo $index === 0 ? 'active' : ''; ?>" 130 style="background-image: url('<?php echo esc_url(wp_get_attachment_image_url($image_id, 'large')); ?>')"> 131 </div> 132 133 <?php endforeach; ?> 134 135 <div class="gallery-counter">1/<?php echo count($gallery_images); ?></div> 136 <div class="transition-indicator"></div> 137 138 <div class="gallery-controls"> 139 <button class="gallery-btn prev-btn"> 140 <i class="fas fa-chevron-left"></i> 141 </button> 142 <button class="gallery-btn next-btn"> 143 <i class="fas fa-chevron-right"></i> 144 </button> 145 </div> 146 </div> 147 148 <div class="thumbnail-container"> 149 <?php foreach ($gallery_images as $index => $image_id) : ?> 150 <div class="property-thumbnail <?php echo $index === 0 ? 'active' : ''; ?>" 151 data-index="<?php echo esc_attr($index); ?>" 152 style="background-image: url('<?php echo esc_url(wp_get_attachment_image_url($image_id, 'thumbnail')); ?>')"> 153 </div> 154 <?php endforeach; ?> 155 </div> 156 157 <?php elseif (has_post_thumbnail($property_id)) : ?> 158 <div class="gallery-main"> 159 <div class="gallery-slide active" 160 style="background-image: url('<?php echo esc_url(get_the_post_thumbnail_url($property_id, 'large')); ?>')"> 161 </div> 162 163 <div class="gallery-counter">1/1</div> 164 <div class="transition-indicator"></div> 165 166 <div class="gallery-controls"> 167 <button class="gallery-btn prev-btn"> 168 <i class="fas fa-chevron-left"></i> 169 </button> 170 <button class="gallery-btn next-btn"> 171 <i class="fas fa-chevron-right"></i> 172 </button> 173 </div> 174 </div> 175 176 <div class="thumbnail-container"> 177 <div class="property-thumbnail active" data-index="0" 178 style="background-image: url('<?php echo esc_url(get_the_post_thumbnail_url($property_id, 'thumbnail')); ?>')"> 179 </div> 180 </div> 181 182 <?php else : ?> 183 <div class="gallery-main"> 184 <div class="gallery-slide active" 185 style="background-image: url('<?php echo esc_url(HVNLY_PROPERTY_URL . 'public/assets/img/no-thumb.png'); ?>')"> 186 </div> 187 <div class="gallery-counter">0/0</div> 188 </div> 189 <?php endif; ?> 190 </div> 191 192 <!-- Property Header --> 193 <div class="property-header"> 194 <div> 195 <h1 class="property-title"><?php the_title(); ?></h1> 196 <div class="property-address"> 197 <i class="fas fa-map-marker-alt"></i> 198 <?php echo esc_html($address); ?> 199 </div> 200 <div class="property-uptodate"> 201 <i class="fas fa-calendar"></i> 202 <?php 203 203 $updated_time = get_the_modified_time('U'); // Get UNIX timestamp 204 204 $current_time = current_time('timestamp'); // Current timestamp according to WordPress time zone … … 212 212 } 213 213 ?> 214 </div> 215 216 217 </div> 218 219 220 <div class="property-price"> 221 <?php echo esc_html($currency_symbol); ?> <?php echo esc_html($price); ?> 222 </div> 223 224 225 </div> 226 227 228 229 <div class="row"> 230 <div class="col-lg-8"> 231 232 <!-- Property Overview --> 233 <div class="property-details-card"> 234 <h2 class="section-title">Overview</h2> 235 236 <div class="row"> 237 <div class="col-lg-4 col-md-6"> 238 239 <?php if ($bedrooms) : ?> 240 <div class="detail-item"> 241 <div class="detail-icon"> 242 <i class="fas fa-bed"></i> 243 </div> 244 <div class="detail-content"> 245 <h4><?php esc_html_e('Bedrooms', 'havenlytics'); ?></h4> 246 <p><?php echo esc_html($bedrooms); ?></p> 247 </div> 248 </div> 249 <?php endif; ?> 250 251 <?php if ($sqft) : ?> 252 <div class="detail-item"> 253 <div class="detail-icon"> 254 <i class="fas fa-ruler-combined"></i> 255 </div> 256 <div class="detail-content"> 257 <h4> 258 <?php esc_html_e('Square Feet', 'havenlytics'); ?></h4> 259 <p> <?php echo esc_html($sqft); ?> 260 <?php esc_html_e('sqft', 'havenlytics'); ?> 261 </p> 262 </div> 263 </div> 264 <?php endif; ?> 265 <?php if ($year_built) : ?> 266 <div class="detail-item"> 267 <div class="detail-icon"> 268 <i class="fas fa-calendar-alt"></i> 269 </div> 270 <div class="detail-content"> 271 <h4><?php esc_html_e('Year Built', 'havenlytics'); ?></h4> 272 <p><?php echo esc_html($year_built); ?></p> 273 </div> 274 </div> 275 <?php endif; ?> 276 </div> 277 278 <div class="col-lg-4 col-md-6"> 279 <?php if ($bathrooms) : ?> 280 <div class="detail-item"> 281 <div class="detail-icon"> 282 <i class="fas fa-bath"></i> 283 </div> 284 <div class="detail-content"> 285 <h4><?php esc_html_e('Bathrooms', 'havenlytics'); ?></h4> 286 <p><?php echo esc_html($bathrooms); ?></p> 287 </div> 288 </div> 289 <?php endif; ?> 290 <?php if ($lot_size) : ?> 291 <div class="detail-item"> 292 <div class="detail-icon"> 293 <i class="fas fa-vector-square"></i> 294 </div> 295 <div class="detail-content"> 296 <h4><?php esc_html_e('Lot Size', 'havenlytics'); ?></h4> 297 <p><?php echo esc_html($lot_size); ?> acres</p> 298 </div> 299 </div> 300 <?php endif; ?> 301 <?php if ($garage) : ?> 302 <div class="detail-item"> 303 <div class="detail-icon"> 304 <i class="fas fa-car"></i> 305 </div> 306 <div class="detail-content"> 307 <h4><?php esc_html_e('Garage', 'havenlytics'); ?></h4> 308 <p><?php echo esc_html($garage); ?> 309 car<?php echo esc_html($garage > 1 ? 's' : ''); ?></p> 310 </div> 311 </div> 312 <?php endif; ?> 313 </div> 314 315 <div class="col-lg-4 col-md-6"> 316 <?php if ($tax_amount) : ?> 317 <div class="detail-item"> 318 <div class="detail-icon"> 319 <i class="fas fa-dollar-sign"></i> 320 </div> 321 <div class="detail-content"> 322 <h4><?php esc_html_e('Annual Tax', 'havenlytics'); ?></h4> 323 <p><?php echo esc_html($currency_symbol); ?> 324 <?php echo esc_html($tax_amount); ?></p> 325 </div> 326 </div> 327 <?php endif; ?> 328 <?php if ($rating) : ?> 329 <div class="detail-item"> 330 <div class="detail-icon"> 331 <i class="fas fa-star"></i> 332 </div> 333 <div class="detail-content"> 334 <h4><?php esc_html_e('Rating', 'havenlytics'); ?></h4> 335 <p><?php echo esc_html($rating); ?> / 5</p> 336 </div> 337 </div> 338 <?php endif; ?> 339 340 </div> 214 </div> 215 216 217 </div> 218 219 220 <div class="property-price"> 221 <?php echo esc_html($currency_symbol); ?> <?php echo esc_html($price); ?> 222 </div> 223 224 225 </div> 226 227 228 229 <div class="row"> 230 <div class="col-lg-8"> 231 232 <!-- Property Overview --> 233 <div class="property-details-card"> 234 <h2 class="section-title">Overview</h2> 235 236 <div class="row"> 237 <div class="col-lg-4 col-md-6"> 238 239 <?php if ($bedrooms) : ?> 240 <div class="detail-item"> 241 <div class="detail-icon"> 242 <i class="fas fa-bed"></i> 243 </div> 244 <div class="detail-content"> 245 <h4><?php esc_html_e('Bedrooms', 'havenlytics'); ?></h4> 246 <p><?php echo esc_html($bedrooms); ?></p> 247 </div> 248 </div> 249 <?php endif; ?> 250 251 <?php if ($sqft) : ?> 252 <div class="detail-item"> 253 <div class="detail-icon"> 254 <i class="fas fa-ruler-combined"></i> 255 </div> 256 <div class="detail-content"> 257 <h4> 258 <?php esc_html_e('Square Feet', 'havenlytics'); ?></h4> 259 <p> <?php echo esc_html($sqft); ?> 260 <?php esc_html_e('sqft', 'havenlytics'); ?> 261 </p> 262 </div> 263 </div> 264 <?php endif; ?> 265 <?php if ($year_built) : ?> 266 <div class="detail-item"> 267 <div class="detail-icon"> 268 <i class="fas fa-calendar-alt"></i> 269 </div> 270 <div class="detail-content"> 271 <h4><?php esc_html_e('Year Built', 'havenlytics'); ?></h4> 272 <p><?php echo esc_html($year_built); ?></p> 273 </div> 274 </div> 275 <?php endif; ?> 276 </div> 277 278 <div class="col-lg-4 col-md-6"> 279 <?php if ($bathrooms) : ?> 280 <div class="detail-item"> 281 <div class="detail-icon"> 282 <i class="fas fa-bath"></i> 283 </div> 284 <div class="detail-content"> 285 <h4><?php esc_html_e('Bathrooms', 'havenlytics'); ?></h4> 286 <p><?php echo esc_html($bathrooms); ?></p> 287 </div> 288 </div> 289 <?php endif; ?> 290 <?php if ($lot_size) : ?> 291 <div class="detail-item"> 292 <div class="detail-icon"> 293 <i class="fas fa-vector-square"></i> 294 </div> 295 <div class="detail-content"> 296 <h4><?php esc_html_e('Lot Size', 'havenlytics'); ?></h4> 297 <p><?php echo esc_html($lot_size); ?> acres</p> 298 </div> 299 </div> 300 <?php endif; ?> 301 <?php if ($garage) : ?> 302 <div class="detail-item"> 303 <div class="detail-icon"> 304 <i class="fas fa-car"></i> 305 </div> 306 <div class="detail-content"> 307 <h4><?php esc_html_e('Garage', 'havenlytics'); ?></h4> 308 <p><?php echo esc_html($garage); ?> 309 car<?php echo esc_html($garage > 1 ? 's' : ''); ?></p> 310 </div> 311 </div> 312 <?php endif; ?> 313 </div> 314 315 <div class="col-lg-4 col-md-6"> 316 <?php if ($tax_amount) : ?> 317 <div class="detail-item"> 318 <div class="detail-icon"> 319 <i class="fas fa-dollar-sign"></i> 320 </div> 321 <div class="detail-content"> 322 <h4><?php esc_html_e('Annual Tax', 'havenlytics'); ?></h4> 323 <p><?php echo esc_html($currency_symbol); ?> 324 <?php echo esc_html($tax_amount); ?></p> 325 </div> 326 </div> 327 <?php endif; ?> 328 <?php if ($rating) : ?> 329 <div class="detail-item"> 330 <div class="detail-icon"> 331 <i class="fas fa-star"></i> 332 </div> 333 <div class="detail-content"> 334 <h4><?php esc_html_e('Rating', 'havenlytics'); ?></h4> 335 <p><?php echo esc_html($rating); ?> / 5</p> 336 </div> 337 </div> 338 <?php endif; ?> 339 341 340 </div> 342 341 </div> 343 344 <?php if ($short_description) : ?> 345 <!-- Property Summary --> 346 <div class="property-details-card"> 347 <h2 class="section-title">Property Summary</h2> 348 <p class="property-description"> 349 <?php echo esc_html($short_description); ?> 350 </p> 351 342 </div> 343 344 <?php if ($short_description) : ?> 345 <!-- Property Summary --> 346 <div class="property-details-card"> 347 <h2 class="section-title">Property Summary</h2> 348 <p class="property-description"> 349 <?php echo esc_html($short_description); ?> 350 </p> 351 352 </div> 353 <?php endif; ?> 354 <!-- Property Details --> 355 <div class="property-details-card"> 356 <h2 class="section-title">Property Details</h2> 357 <div class="property-description"> 358 <?php the_content(); ?> 359 </div> 360 361 </div> 362 363 364 365 366 <?php if (!empty(array_filter($features))) : ?> 367 <!-- Features Section --> 368 <div class="property-details-card"> 369 <h2 class="section-title"><?php esc_html_e('Features & Amenities', 'havenlytics'); ?></h2> 370 <div class="features-grid"> 371 <?php foreach ($features as $feature => $value) : 372 if ($value) : ?> 373 374 <div class="feature-item"> 375 <i class="fas fa-check-circle"></i> 376 <span><?php echo esc_html(ucfirst(str_replace('_', ' ', $feature))); ?></span> 352 377 </div> 353 <?php endif; ?> 354 <!-- Property Details --> 355 <div class="property-details-card"> 356 <h2 class="section-title">Property Details</h2> 357 <div class="property-description"> 358 <?php the_content(); ?> 359 </div> 360 378 <?php endif; 379 endforeach; ?> 361 380 </div> 362 363 364 365 366 <?php if (!empty(array_filter($features))) : ?> 367 <!-- Features Section --> 368 <div class="property-details-card"> 369 <h2 class="section-title"><?php esc_html_e('Features & Amenities', 'havenlytics'); ?></h2> 370 <div class="features-grid"> 371 <?php foreach ($features as $feature => $value) : 372 if ($value) : ?> 373 374 <div class="feature-item"> 375 <i class="fas fa-check-circle"></i> 376 <span><?php echo esc_html(ucfirst(str_replace('_', ' ', $feature))); ?></span> 377 </div> 378 <?php endif; 379 endforeach; ?> 380 </div> 381 </div> 382 <?php endif; ?> 383 <!-- Floor Plans --> 384 385 386 <!-- Video --> 387 <div class="property-details-card"> 388 <div class="property-video-card"> 389 <h2 class="section-title"><?php esc_html_e('Property Video', 'havenlytics'); ?></h2> 390 391 <div class="video-container"> 392 <?php 381 </div> 382 <?php endif; ?> 383 <!-- Floor Plans --> 384 385 386 <!-- Video --> 387 <div class="property-details-card"> 388 <div class="property-video-card"> 389 <h2 class="section-title"><?php esc_html_e('Property Video', 'havenlytics'); ?></h2> 390 391 <div class="video-container"> 392 <?php 393 393 // Get selected video type 394 394 $video_type = get_post_meta(get_the_ID(), '_havenlytics_property_video_type', true); … … 414 414 ?> 415 415 416 <?php if (!empty($video_url)) : ?> 417 <div class="video-wrapper"> 418 <div class="video-thumbnail"> 419 <img src="<?php echo esc_url($thumbnail_url); ?>" 420 alt="Property Video Thumbnail"> 421 422 <div class="havenlytics_property_video-btn-main"> 423 <div class="havenlytics_property_video-play-button" id="play-button" 424 data-video-url="<?php echo esc_url($video_url); ?>" 425 data-video-type="<?php echo esc_attr($video_type); ?>"> 426 <div class="havenlytics_property_video-icon"></div> 427 <div class="havenlytics_property_video-pulse-ring"></div> 428 </div> 429 </div> 416 <?php if (!empty($video_url)) : ?> 417 <div class="video-wrapper"> 418 <div class="video-thumbnail"> 419 <img src="<?php echo esc_url($thumbnail_url); ?>" 420 alt="Property Video Thumbnail"> 421 422 <div class="havenlytics_property_video-btn-main"> 423 <div class="havenlytics_property_video-play-button" id="play-button" 424 data-video-url="<?php echo esc_url($video_url); ?>" 425 data-video-type="<?php echo esc_attr($video_type); ?>"> 426 <div class="havenlytics_property_video-icon"></div> 427 <div class="havenlytics_property_video-pulse-ring"></div> 430 428 </div> 431 429 </div> 432 433 <!-- Video Popup --> 434 <div class="havenlytics_property_video-overlay"> 435 <div class="havenlytics_property_video-spinner"></div> 436 <div class="havenlytics_property_video-container"> 437 <div class="havenlytics_property_video-close"> 438 <i class="fas fa-times"></i> 439 </div> 440 <div class="havenlytics_property_video-player" id="video-player"></div> 441 </div> 430 </div> 431 </div> 432 433 <!-- Video Popup --> 434 <div class="havenlytics_property_video-overlay"> 435 <div class="havenlytics_property_video-spinner"></div> 436 <div class="havenlytics_property_video-container"> 437 <div class="havenlytics_property_video-close"> 438 <i class="fas fa-times"></i> 442 439 </div> 443 <?php else : ?> 444 <p><?php esc_html_e('No video available for this property.', 'havenlytics'); ?></p> 445 <?php endif; ?> 446 </div> 440 <div class="havenlytics_property_video-player" id="video-player"></div> 441 </div> 442 </div> 443 <?php else : ?> 444 <p><?php esc_html_e('No video available for this property.', 'havenlytics'); ?></p> 445 <?php endif; ?> 447 446 </div> 448 447 </div> 449 450 451 452 <?php if ($latitude && $longitude) : ?> 453 <!-- Location Map --> 454 <div class="property-details-card"> 455 <h2 class="section-title"><?php esc_html_e('Property Location', 'havenlytics'); ?></h2> 456 457 <div class="map-container"> 458 <div id="havenlytics-property-map" data-lat="<?php echo esc_attr($latitude); ?>" 459 data-lng="<?php echo esc_attr($longitude); ?>" 460 style="height: 400px; width: 100%; background: #f5f5f5;"> 461 </div> 462 <!-- <div class="map-overlay"> 448 </div> 449 450 451 452 <?php if ($latitude && $longitude) : ?> 453 <!-- Location Map --> 454 <div class="property-details-card"> 455 <h2 class="section-title"><?php esc_html_e('Property Location', 'havenlytics'); ?></h2> 456 457 <div class="map-container"> 458 <div id="havenlytics-property-map" data-lat="<?php echo esc_attr($latitude); ?>" 459 data-lng="<?php echo esc_attr($longitude); ?>" 460 style="height: 400px; width: 100%; background: #f5f5f5;"> 461 </div> 462 <!-- <div class="map-overlay"> 463 463 464 464 <h3>Neighborhood Information</h3> … … 470 470 </div> --> 471 471 472 </div>473 </div>474 <?php endif; ?>475 <!-- Popup Gallery -->476 <div class="property-details-card">477 <h2 class="section-title">Property Gallery</h2>478 <div class="row">479 <div class="col-md-12 mb-4">480 <div class="havenlytics_gallery_fancybox_gallery">481 <?php if (!empty($gallery_images)) : ?>482 <?php foreach ($gallery_images as $index => $image_id) :472 </div> 473 </div> 474 <?php endif; ?> 475 <!-- Popup Gallery --> 476 <div class="property-details-card"> 477 <h2 class="section-title">Property Gallery</h2> 478 <div class="row"> 479 <div class="col-md-12 mb-4"> 480 <div class="havenlytics_gallery_fancybox_gallery"> 481 <?php if (!empty($gallery_images)) : ?> 482 <?php foreach ($gallery_images as $index => $image_id) : 483 483 $thumb_url = wp_get_attachment_image_url($image_id, 'medium'); 484 484 $large_url = wp_get_attachment_image_url($image_id, 'large'); … … 487 487 $animation_delay = 0.2 + ($index * 0.1); // optional animated delay 488 488 ?> 489 <div class="havenlytics_gallery_fancybox_gallery-item havenlytics_gallery_fancybox_floating" 490 style="animation-delay: <?php echo esc_attr(number_format($animation_delay, 1)); ?>s;" 491 data-button-title="<?php the_title(); ?>" 492 data-button-link="<?php echo esc_url(get_permalink($property_id)); ?>"> 493 <img src="<?php echo esc_url($thumb_url); ?>" 494 data-large="<?php echo esc_url($large_url); ?>" 495 alt="<?php echo esc_attr($alt_text ? $alt_text : $title_text); ?>"> 496 <div class="havenlytics_gallery_fancybox_gallery-caption"> 497 <?php echo esc_html($title_text); ?> 498 </div> 489 <div class="havenlytics_gallery_fancybox_gallery-item havenlytics_gallery_fancybox_floating" 490 style="animation-delay: <?php echo esc_attr(number_format($animation_delay, 1)); ?>s;" 491 data-button-title="<?php the_title(); ?>" 492 data-button-link="<?php echo esc_url(get_permalink($property_id)); ?>"> 493 <img src="<?php echo esc_url($thumb_url); ?>" 494 data-large="<?php echo esc_url($large_url); ?>" 495 alt="<?php echo esc_attr($alt_text ? $alt_text : $title_text); ?>"> 496 <div class="havenlytics_gallery_fancybox_gallery-caption"> 497 <?php echo esc_html($title_text); ?> 498 </div> 499 </div> 500 <?php endforeach; ?> 501 <?php else : ?> 502 <p><?php esc_html_e('No gallery images found.', 'havenlytics'); ?></p> 503 <?php endif; ?> 504 </div> 505 506 <!-- Heavenlytics FancyBox Structure --> 507 <div class="havenlytics_gallery_fancybox_fancybox"> 508 <span class="havenlytics_gallery_fancybox_fancybox_close"><i 509 class="fas fa-times"></i></span> 510 <span 511 class="havenlytics_gallery_fancybox_fancybox_nav havenlytics_gallery_fancybox_fancybox_prev"><i 512 class="fas fa-chevron-left"></i></span> 513 <span 514 class="havenlytics_gallery_fancybox_fancybox_nav havenlytics_gallery_fancybox_fancybox_next"><i 515 class="fas fa-chevron-right"></i></span> 516 <div class="havenlytics_gallery_fancybox_fancybox_counter">1 / 8</div> 517 518 <div class="havenlytics_gallery_fancybox_fancybox_content"> 519 <div class="havenlytics_gallery_fancybox_fancybox_main"> 520 <div class="havenlytics_gallery_fancybox_fancybox_img_wrap"> 521 <img class="havenlytics_gallery_fancybox_fancybox_img" src="" alt=""> 522 </div> 523 <div class="havenlytics_gallery_fancybox_fancybox_caption"></div> 524 <div class="havenlytics_gallery_fancybox_fancybox_property"> 525 <a href="#" class="havenlytics_gallery_fancybox_property_button" 526 target="_blank"> 527 View Property Details <i class="fas fa-arrow-right"></i> 528 </a> 529 </div> 530 </div> 531 <div class="havenlytics_gallery_fancybox_fancybox_sidebar"> 532 <div class="havenlytics_gallery_fancybox_fancybox_thumbnails"></div> 533 </div> 534 </div> 535 </div> 536 <!-- Heavenlytics FancyBox Structure --> 537 </div> 538 539 540 </div> 541 </div> 542 543 544 </div> 545 546 <!-- Sidebar --> 547 <div class="col-lg-4"> 548 <div class="havenlytics_sticky_sidebar"> 549 <!-- Amenities Section --> 550 <div class="property-details-card"> 551 <h2 class="section-title">Property Amenities</h2> 552 <div class="havenlytics-amenities-grid"> 553 <?php 554 $post_id = get_the_ID(); 555 556 if (get_post_meta($post_id, '_havenlytics_property_book_property', true)) : 557 ?> 558 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="enquiry"> 559 <div class="havenlytics-amenity-icon"> 560 <i class="fas fa-calendar"></i> 561 </div> 562 <h4>Book Property</h4> 563 </div> 564 <?php endif; ?> 565 566 <?php if (get_post_meta($post_id, '_havenlytics_property_virtual_tour', true)) : ?> 567 <div class="havenlytics-amenity-card havenlytics-popup-trigger" 568 data-popup="virtualTour"> 569 <div class="havenlytics-amenity-icon"> 570 <i class="fas fa-vr-cardboard"></i> 571 </div> 572 <h4>Virtual Tour</h4> 573 </div> 574 <?php endif; ?> 575 576 <?php if (get_post_meta($post_id, '_havenlytics_property_floorplan_img', true)) : ?> 577 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="floorplan"> 578 <div class="havenlytics-amenity-icon"> 579 <i class="fas fa-vector-square"></i> 580 </div> 581 <h4>Floorplan</h4> 582 </div> 583 <?php endif; ?> 584 585 <?php if (get_post_meta($post_id, '_havenlytics_property_brochure_pdf', true)) : ?> 586 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="brochure"> 587 <div class="havenlytics-amenity-icon"> 588 <i class="fas fa-file-alt"></i> 589 </div> 590 <h4>View Brochure</h4> 591 </div> 592 <?php endif; ?> 593 594 <?php if (get_post_meta($post_id, '_havenlytics_property_epc_pdf', true)) : ?> 595 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="epc"> 596 <div class="havenlytics-amenity-icon"> 597 <i class="fas fa-clipboard"></i> 598 </div> 599 <h4>View Epc</h4> 600 </div> 601 <?php endif; ?> 602 603 <?php if (get_post_meta($post_id, '_havenlytics_property_map_url', true)) : ?> 604 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="map"> 605 <div class="havenlytics-amenity-icon"> 606 <i class="fas fa-map-marked-alt"></i> 607 </div> 608 <h4>Map</h4> 609 </div> 610 <?php endif; ?> 611 612 <?php if (get_post_meta($post_id, '_havenlytics_property_request_call', true)) : ?> 613 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="agent"> 614 <div class="havenlytics-amenity-icon"> 615 <i class="fas fa-phone-alt"></i> 616 </div> 617 <h4>Request Call Back</h4> 618 </div> 619 <?php endif; ?> 620 621 <?php if (get_post_meta($post_id, '_havenlytics_property_arrange_view', true)) : ?> 622 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="viewing"> 623 <div class="havenlytics-amenity-icon"> 624 <i class="fas fa-calendar-check"></i> 625 </div> 626 <h4>Arrange Viewing</h4> 627 </div> 628 <?php endif; ?> 629 </div> 630 631 </div> 632 <?php 633 // Get the custom meta field value 634 $featured_property = get_post_meta(get_the_ID(), '_havenlytics_property_featured_item', true); 635 636 // Check if it's not empty before displaying the widget 637 if (!empty($featured_property)) : 638 ?> 639 <!-- Featured Property--> 640 <div class="property-details-card"> 641 642 <h2 class="section-title">Featured Property</h2> 643 644 <div class="havenlytics_featured_items-widget"> 645 <div class="havenlytics_carousel-container"> 646 <div class="owl-carousel owl-theme havenlytics_carousel"> 647 648 <?php 649 // Query only featured properties 650 $args = array( 651 'post_type' => 'hvnly_property', 652 'posts_per_page' => -1, 653 'meta_key' => '_havenlytics_property_featured_item', 654 'meta_value' => '1', 655 ); 656 657 $featured_query = new WP_Query($args); 658 659 // Define currency symbols 660 $currency_symbols = array( 661 'USD' => '$', 662 'EUR' => '€', 663 'GBP' => '£', 664 'AUD' => 'A$', 665 'CAD' => 'C$', 666 'JPY' => '¥', 667 'CHF' => 'CHF', 668 'CNY' => '¥', 669 'INR' => '₹', 670 'NZD' => 'NZ$', 671 'SGD' => 'S$', 672 'HKD' => 'HK$', 673 'SEK' => 'kr', 674 'NOK' => 'kr', 675 'MXN' => 'Mex$', 676 'ZAR' => 'R', 677 'BRL' => 'R$', 678 'RUB' => '₽', 679 'KRW' => '₩', 680 'TRY' => '₺', 681 ); 682 683 if ($featured_query->have_posts()) : 684 while ($featured_query->have_posts()) : 685 $featured_query->the_post(); 686 687 $property_id = get_the_ID(); 688 $currency_code = get_post_meta($property_id, '_havenlytics_currency', true); 689 $price = get_post_meta($property_id, '_havenlytics_price', true); 690 $bedrooms = get_post_meta($property_id, '_havenlytics_bedrooms', true); 691 $bathrooms = get_post_meta($property_id, '_havenlytics_bathrooms', true); 692 $sqft = get_post_meta($property_id, '_havenlytics_sqft', true); 693 $status = get_post_meta($property_id, '_havenlytics_status', true); 694 $address = get_post_meta($property_id, '_havenlytics_address', true); 695 696 $currency_symbol = isset($currency_symbols[$currency_code]) ? $currency_symbols[$currency_code] : '$'; 697 698 // Get status badge label 699 $status_badge = ''; 700 switch ($status) { 701 case 'for_sale': 702 $status_badge = __('For Sale', 'havenlytics'); 703 break; 704 case 'for_rent': 705 $status_badge = __('For Rent', 'havenlytics'); 706 break; 707 case 'pending': 708 $status_badge = __('Pending', 'havenlytics'); 709 break; 710 case 'sold': 711 $status_badge = __('Sold', 'havenlytics'); 712 break; 713 case 'off_market': 714 $status_badge = __('Off Market', 'havenlytics'); 715 break; 716 } 717 ?> 718 719 <!-- Property 1 --> 720 <div class="havenlytics_property item"> 721 <div class="havenlytics_image"> 722 <?php if (has_post_thumbnail()) : ?> 723 <?php the_post_thumbnail('havenlytics-property-related-thumb', array('class' => 'img-fluid', 'alt' => esc_attr(get_the_title()))); ?> 724 <?php else : ?> 725 <img src="<?php echo esc_url(HVNLY_PROPERTY_URL . 'public/assets/img/video-placeholder.png'); ?>" 726 alt="<?php esc_attr_e('Property Image', 'havenlytics'); ?>" 727 class="img-fluid" /> 728 <?php endif; ?> 729 <?php if (! empty($status_badge)) : ?> 730 <div class="havenlytics_badge"><?php echo esc_html($status_badge); ?> 499 731 </div> 500 <?php endforeach; ?> 501 <?php else : ?> 502 <p><?php esc_html_e('No gallery images found.', 'havenlytics'); ?></p> 503 <?php endif; ?> 504 </div> 505 506 <!-- Heavenlytics FancyBox Structure --> 507 <div class="havenlytics_gallery_fancybox_fancybox"> 508 <span class="havenlytics_gallery_fancybox_fancybox_close"><i 509 class="fas fa-times"></i></span> 510 <span 511 class="havenlytics_gallery_fancybox_fancybox_nav havenlytics_gallery_fancybox_fancybox_prev"><i 512 class="fas fa-chevron-left"></i></span> 513 <span 514 class="havenlytics_gallery_fancybox_fancybox_nav havenlytics_gallery_fancybox_fancybox_next"><i 515 class="fas fa-chevron-right"></i></span> 516 <div class="havenlytics_gallery_fancybox_fancybox_counter">1 / 8</div> 517 518 <div class="havenlytics_gallery_fancybox_fancybox_content"> 519 <div class="havenlytics_gallery_fancybox_fancybox_main"> 520 <div class="havenlytics_gallery_fancybox_fancybox_img_wrap"> 521 <img class="havenlytics_gallery_fancybox_fancybox_img" src="" alt=""> 522 </div> 523 <div class="havenlytics_gallery_fancybox_fancybox_caption"></div> 524 <div class="havenlytics_gallery_fancybox_fancybox_property"> 525 <a href="#" class="havenlytics_gallery_fancybox_property_button" 526 target="_blank"> 527 View Property Details <i class="fas fa-arrow-right"></i> 732 <?php endif; ?> 733 </div> 734 <div class="havenlytics_details"> 735 <?php if ($price) : ?> 736 <div class="havenlytics_price"> 737 <?php echo esc_html($currency_symbol . $price); ?></div> 738 <?php endif; ?> 739 <div class="havenlytics_title"> 740 <a href="<?php the_permalink(); ?>"> 741 <?php echo esc_html(wp_trim_words(get_the_title(), 8, '...')); ?> 528 742 </a> 529 743 </div> 530 </div> 531 <div class="havenlytics_gallery_fancybox_fancybox_sidebar"> 532 <div class="havenlytics_gallery_fancybox_fancybox_thumbnails"></div> 744 <?php if ($address) : ?> 745 <div class="havenlytics_address"> 746 <i class="fas fa-map-marker-alt"></i> 747 <?php echo esc_html($address); ?> 748 </div> 749 <?php endif; ?> 750 <div class="havenlytics_features"> 751 <?php if ($bedrooms) : ?> 752 753 754 755 <div class="havenlytics_feature"> 756 <!-- Bedrooms SVG --> 757 <svg fill="#6C60FE" width="20px" height="20px" 758 viewBox="0 -11.47 122.88 122.88" version="1.1" id="Layer_1" 759 xmlns="http://www.w3.org/2000/svg" 760 xmlns:xlink="http://www.w3.org/1999/xlink" 761 style="enable-background:new 0 0 122.88 99.94" 762 xml:space="preserve"> 763 <g id="SVGRepo_bgCarrier" stroke-width="0"></g> 764 <g id="SVGRepo_tracerCarrier" stroke-linecap="round" 765 stroke-linejoin="round"></g> 766 <g id="SVGRepo_iconCarrier"> 767 <g> 768 <path 769 d="M4.22,67.36h114.31v-4.67c0-1.13-0.22-2.18-0.61-3.12c-0.42-1-1.04-1.89-1.81-2.66c-0.47-0.47-1-0.9-1.57-1.28 c-0.58-0.39-1.2-0.73-1.85-1.02c-1.75-0.38-3.49-0.74-5.22-1.08c-1.74-0.34-3.49-0.66-5.25-0.96c-0.08-0.01-0.14-0.02-0.22-0.04 c-0.89-0.15-1.74-0.29-2.55-0.42c-0.81-0.13-1.67-0.26-2.57-0.4l-0.02,0c-6.12-0.78-12.22-1.38-18.31-1.78 c-6.1-0.4-12.17-0.6-18.2-0.61c-3.58,0-7.15,0.06-10.72,0.2c-3.55,0.14-7.12,0.34-10.69,0.62l-0.02,0 c-3.34,0.31-6.67,0.7-10.01,1.15c-3.33,0.45-6.67,0.98-10.03,1.57l-0.37,0.09c-0.07,0.02-0.14,0.03-0.2,0.03 c-0.06,0.01-0.12,0.01-0.18,0.01c-1.57,0.28-3.18,0.59-4.84,0.92c-1.61,0.32-3.22,0.66-4.82,1.01c-0.4,0.22-0.78,0.47-1.14,0.73 c-0.36,0.27-0.71,0.56-1.02,0.87v0c-0.67,0.67-1.2,1.44-1.56,2.3c-0.34,0.81-0.53,1.71-0.53,2.69V67.36L4.22,67.36z M14.2,0h92.99 c1.21,0,2.37,0.24,3.43,0.68c1.1,0.46,2.09,1.13,2.92,1.95c0.83,0.83,1.5,1.82,1.95,2.92c0.44,1.06,0.68,2.22,0.68,3.43v42.69 c0.51,0.3,1.01,0.63,1.47,0.99c0.52,0.4,1.01,0.82,1.46,1.27c1.16,1.16,2.1,2.51,2.73,4.03c0.6,1.43,0.93,3.02,0.93,4.74v6.09 c0.03,0.1,0.06,0.2,0.08,0.3l0,0.02c0.02,0.13,0.03,0.25,0.03,0.37c0,0.13-0.01,0.26-0.04,0.39l0,0c-0.02,0.1-0.05,0.2-0.08,0.3 v27.66c0,0.58-0.24,1.11-0.62,1.49c-0.38,0.38-0.91,0.62-1.49,0.62h-4.35c-0.49,0-0.94-0.17-1.3-0.45 c-0.36-0.28-0.63-0.68-0.74-1.14c-0.8-2.3-1.61-4.12-2.48-5.54c-0.86-1.4-1.78-2.4-2.84-3.11c-1.07-0.71-2.35-1.16-3.9-1.43 c-1.58-0.28-3.42-0.37-5.61-0.36l-79.76,0.1l-0.04,0c-1.57-0.03-2.86,0.17-3.94,0.59c-1.07,0.42-1.94,1.05-2.66,1.86 c-0.81,0.9-1.49,2.05-2.11,3.39c-0.63,1.37-1.2,2.93-1.77,4.64l0,0c-0.14,0.44-0.42,0.79-0.77,1.04c-0.33,0.24-0.73,0.38-1.14,0.4 c-0.03,0.01-0.06,0.01-0.09,0.01H2.11c-0.58,0-1.11-0.24-1.49-0.62C0.24,98.94,0,98.41,0,97.83V61.52c0-1.57,0.3-3.01,0.84-4.31 c0.58-1.38,1.43-2.61,2.49-3.67c0.3-0.3,0.63-0.6,0.98-0.88c0.3-0.24,0.6-0.47,0.92-0.68V8.89c0-1.21,0.24-2.36,0.68-3.4 c0.46-1.09,1.13-2.07,1.96-2.89c0.83-0.82,1.82-1.47,2.91-1.92C11.84,0.24,12.99,0,14.2,0L14.2,0z M107.19,4.22H14.2 c-0.65,0-1.27,0.13-1.84,0.36c-0.59,0.24-1.11,0.59-1.55,1.02c-0.43,0.42-0.78,0.94-1.02,1.5C9.57,7.65,9.45,8.25,9.45,8.89v41.06 c0.3-0.1,0.6-0.18,0.91-0.26c0.49-0.13,0.98-0.24,1.47-0.32c0.68-0.12,1.42-0.25,2.22-0.39c0.6-0.1,1.24-0.21,1.9-0.31V38.19 c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55c1.38-0.57,2.89-0.89,4.47-0.89h19.82 c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81c0.57,1.38,0.89,2.89,0.89,4.47v6.69 c0.7-0.01,1.4-0.01,2.11-0.01v-6.68c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55 c1.38-0.57,2.89-0.89,4.47-0.89h19.82c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81 c0.57,1.38,0.89,2.89,0.89,4.47v10.34c0.75,0.11,1.55,0.24,2.41,0.38c0.95,0.15,1.86,0.3,2.74,0.45c0.45,0.08,0.91,0.17,1.37,0.28 c0.29,0.07,0.57,0.14,0.84,0.22V8.98c0-0.64-0.13-1.25-0.36-1.81c-0.24-0.58-0.6-1.1-1.04-1.55c-0.44-0.44-0.97-0.8-1.54-1.04 C108.44,4.35,107.83,4.22,107.19,4.22L107.19,4.22z M43.21,45.56c2.01-0.15,4.03-0.28,6.08-0.38c1.89-0.1,3.8-0.17,5.71-0.22v-6.77 c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64c-0.88-0.37-1.85-0.57-2.86-0.57H27.67 c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44c-0.37,0.88-0.57,1.85-0.57,2.86V48 c1.62-0.24,3.26-0.46,4.94-0.68c1.81-0.23,3.61-0.44,5.39-0.64c0.69-0.08,1.43-0.17,2.2-0.25c0.72-0.08,1.47-0.15,2.27-0.23 c1.36-0.13,2.71-0.25,4.04-0.36C40.37,45.75,41.77,45.65,43.21,45.56L43.21,45.56z M65.54,44.9c1.21,0.02,2.42,0.05,3.63,0.09 c1.34,0.04,2.68,0.1,4.01,0.16l0.01,0c2.19,0.08,4.33,0.18,6.41,0.3c2.08,0.12,4.11,0.27,6.05,0.44c2.82,0.25,5.55,0.55,8.14,0.9 c2.32,0.32,4.52,0.68,6.58,1.08v-9.68c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64 c-0.88-0.37-1.85-0.57-2.86-0.57H73.05c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44 c-0.37,0.88-0.57,1.85-0.57,2.86V44.9L65.54,44.9z M118.54,71.59H4.22v24.13h1.43c0.56-1.58,1.14-3.05,1.79-4.36 c0.7-1.4,1.49-2.64,2.45-3.71c1.14-1.28,2.48-2.27,4.09-2.93c1.61-0.65,3.49-0.98,5.75-0.93l79.69-0.1c2.57,0,4.77,0.12,6.69,0.49 c1.95,0.37,3.63,1,5.14,2c1.4,0.93,2.6,2.16,3.68,3.77c1.03,1.54,1.95,3.43,2.83,5.76h0.76V71.59L118.54,71.59z"> 770 </path> 771 </g> 772 </g> 773 </svg> 774 <span><?php echo esc_html($bedrooms); ?> 775 <?php esc_html_e('Beds', 'havenlytics'); ?></span> 776 </div> 777 <?php endif; ?> 778 779 <?php if ($bathrooms) : ?> 780 781 782 <div class="havenlytics_feature"> 783 <!-- Bathrooms SVG --> 784 <svg fill="#6C60FE" width="20px" height="20px" 785 viewBox="0 0 512 512" id="Layer_1" 786 enable-background="new 0 0 512 512" 787 xmlns="http://www.w3.org/2000/svg"> 788 <g id="SVGRepo_bgCarrier" stroke-width="0"></g> 789 <g id="SVGRepo_tracerCarrier" stroke-linecap="round" 790 stroke-linejoin="round"></g> 791 <g id="SVGRepo_iconCarrier"> 792 <g> 793 <path 794 d="m496 288c-38.154 0-437.487 0-448 0v-56h32c8.837 0 16-7.164 16-16v-40c0-8.836-7.163-16-16-16s-16 7.164-16 16v24h-16v-138.745c0-25.903 31.562-39.064 49.941-20.686l16.94 16.94c-13.424 23.401-10.164 53.835 9.805 73.805l8 8c6.247 6.248 16.379 6.249 22.627 0l64-64c6.249-6.248 6.249-16.379 0-22.627l-8-8c-20.35-20.351-50.837-23.06-73.817-9.817l-16.928-16.928c-11.57-11.57-26.952-17.942-43.313-17.942-33.776 0-61.255 27.479-61.255 61.255v226.745c-8.837 0-16 7.164-16 16s7.163 16 16 16v32c0 43.889 19.742 83.247 50.806 109.681l-22.338 23.229c-9.803 10.193-2.445 27.09 11.53 27.09 4.199 0 8.394-1.644 11.534-4.91l26.218-27.263c19.844 10.326 42.376 16.173 66.25 16.173h192c23.874 0 46.406-5.847 66.25-16.173l26.218 27.263c6.106 6.35 16.234 6.585 22.623.442 6.369-6.125 6.566-16.254.441-22.623l-22.338-23.229c31.064-26.433 50.806-65.791 50.806-109.68v-32c8.837 0 16-7.164 16-16s-7.163-16-16-16zm-310.89-223.738-40.845 40.845c-8.246-11.427-7.23-27.515 3.048-37.794 10.378-10.377 26.461-11.259 37.797-3.051zm278.89 287.738c0 61.757-50.243 112-112 112h-192c-61.757 0-112-50.243-112-112v-32h416z"> 795 </path> 796 </g> 797 </g> 798 </svg> 799 <span><?php echo esc_html($bathrooms); ?> 800 <?php esc_html_e('Baths', 'havenlytics'); ?></span> 801 </div> 802 <?php endif; ?> 803 804 805 <?php if ($sqft) : ?> 806 <div class="havenlytics_feature"> 807 808 <!-- Area SVG --> 809 <svg fill="#6C60FE" width="20px" height="20px" 810 viewBox="0 0 256 256" id="Flat" 811 xmlns="http://www.w3.org/2000/svg"> 812 <g id="SVGRepo_bgCarrier" stroke-width="0"></g> 813 <g id="SVGRepo_tracerCarrier" stroke-linecap="round" 814 stroke-linejoin="round" stroke="#CCCCCC" 815 stroke-width="7.68"></g> 816 <g id="SVGRepo_iconCarrier"> 817 <path 818 d="M240,211.98316H227.99414v-108a12.01343,12.01343,0,0,0-12-12h-68v-52a12.01343,12.01343,0,0,0-12-12h-96a12.01343,12.01343,0,0,0-12,12v172H16a4,4,0,0,0,0,8H240a4,4,0,0,0,0-8Zm-24.00586-112a4.00426,4.00426,0,0,1,4,4v108h-72v-112Zm-180-60a4.00427,4.00427,0,0,1,4-4h96a4.00426,4.00426,0,0,1,4,4v172h-104Zm24,32a4.0002,4.0002,0,0,1,4-4h32a4,4,0,1,1,0,8h-32A4.0002,4.0002,0,0,1,59.99414,71.98316Zm56,64a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,115.99414,135.98316Zm-16,40a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,99.99414,175.98316Zm96,0a4.0002,4.0002,0,0,1-4,4h-16a4,4,0,0,1,0-8h16A4.0002,4.0002,0,0,1,195.99414,175.98316Zm-24-40a4.0002,4.0002,0,0,1,4-4h16a4,4,0,1,1,0,8h-16A4.0002,4.0002,0,0,1,171.99414,135.98316Z"> 819 </path> 820 </g> 821 </svg> 822 <span><?php echo esc_html(number_format($sqft)); ?> 823 <?php esc_html_e('sqft', 'havenlytics'); ?></span> 824 </div> 825 <?php endif; ?> 826 </div> 533 827 </div> 534 828 </div> 535 </div> 536 <!-- Heavenlytics FancyBox Structure --> 537 </div> 829 <?php 830 endwhile; 831 wp_reset_postdata(); 832 endif; 833 ?> 834 835 836 837 </div> 838 839 <div class="havenlytics_nav"> 840 <button class="havenlytics_prev"> 841 <i class="fas fa-chevron-left"></i> 842 </button> 843 <button class="havenlytics_next"> 844 <i class="fas fa-chevron-right"></i> 845 </button> 846 </div> 847 </div> 848 849 <?php 850 // Generate dynamic dots based on found posts 851 $total_items = $featured_query->found_posts; 852 if ($total_items > 0) : 853 ?> 854 <div class="havenlytics_dots"> 855 <?php for ($i = 0; $i < $total_items; $i++) : ?> 856 <div class="havenlytics_dot<?php echo ($i === 0) ? ' active' : ''; ?>"></div> 857 <?php endfor; ?> 858 </div> 859 <?php endif; ?> 538 860 539 861 540 862 </div> 863 541 864 </div> 542 543 544 </div> 545 546 <!-- Sidebar --> 547 <div class="col-lg-4"> 548 <div class="havenlytics_sticky_sidebar"> 549 <!-- Amenities Section --> 550 <div class="property-details-card"> 551 <h2 class="section-title">Property Amenities</h2> 552 <div class="havenlytics-amenities-grid"> 553 <?php 554 $post_id = get_the_ID(); 555 556 if (get_post_meta($post_id, '_havenlytics_property_book_property', true)) : 557 ?> 558 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="enquiry"> 559 <div class="havenlytics-amenity-icon"> 560 <i class="fas fa-calendar"></i> 561 </div> 562 <h4>Book Property</h4> 563 </div> 564 <?php endif; ?> 565 566 <?php if (get_post_meta($post_id, '_havenlytics_property_virtual_tour', true)) : ?> 567 <div class="havenlytics-amenity-card havenlytics-popup-trigger" 568 data-popup="virtualTour"> 569 <div class="havenlytics-amenity-icon"> 570 <i class="fas fa-vr-cardboard"></i> 571 </div> 572 <h4>Virtual Tour</h4> 573 </div> 574 <?php endif; ?> 575 576 <?php if (get_post_meta($post_id, '_havenlytics_property_floorplan_img', true)) : ?> 577 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="floorplan"> 578 <div class="havenlytics-amenity-icon"> 579 <i class="fas fa-vector-square"></i> 580 </div> 581 <h4>Floorplan</h4> 582 </div> 583 <?php endif; ?> 584 585 <?php if (get_post_meta($post_id, '_havenlytics_property_brochure_pdf', true)) : ?> 586 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="brochure"> 587 <div class="havenlytics-amenity-icon"> 588 <i class="fas fa-file-alt"></i> 589 </div> 590 <h4>View Brochure</h4> 591 </div> 592 <?php endif; ?> 593 594 <?php if (get_post_meta($post_id, '_havenlytics_property_epc_pdf', true)) : ?> 595 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="epc"> 596 <div class="havenlytics-amenity-icon"> 597 <i class="fas fa-clipboard"></i> 598 </div> 599 <h4>View Epc</h4> 600 </div> 601 <?php endif; ?> 602 603 <?php if (get_post_meta($post_id, '_havenlytics_property_map_url', true)) : ?> 604 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="map"> 605 <div class="havenlytics-amenity-icon"> 606 <i class="fas fa-map-marked-alt"></i> 607 </div> 608 <h4>Map</h4> 609 </div> 610 <?php endif; ?> 611 612 <?php if (get_post_meta($post_id, '_havenlytics_property_request_call', true)) : ?> 613 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="agent"> 614 <div class="havenlytics-amenity-icon"> 615 <i class="fas fa-phone-alt"></i> 616 </div> 617 <h4>Request Call Back</h4> 618 </div> 619 <?php endif; ?> 620 621 <?php if (get_post_meta($post_id, '_havenlytics_property_arrange_view', true)) : ?> 622 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="viewing"> 623 <div class="havenlytics-amenity-icon"> 624 <i class="fas fa-calendar-check"></i> 625 </div> 626 <h4>Arrange Viewing</h4> 627 </div> 628 <?php endif; ?> 629 </div> 630 631 </div> 632 633 <!-- Agent Contact --> 634 <div class="property-details-card"> 635 <div class="agent-card"> 636 637 638 <div class="contact-info"> 639 <div class="contact-item"> 640 <i class="fas fa-phone"></i> 641 <span>(305) 555-0123</span> 642 </div> 643 <div class="contact-item"> 644 <i class="fas fa-envelope"></i> 645 <span>[email protected]</span> 646 </div> 647 <div class="contact-item"> 648 <i class="fas fa-certificate"></i> 649 <span>License #: SL3456723</span> 650 </div> 651 </div> 652 653 <form class="contact-form"> 654 <input type="text" placeholder="Your Name" required> 655 <input type="email" placeholder="Your Email" required> 656 <input type="tel" placeholder="Your Phone"> 657 <textarea placeholder="Your Message"></textarea> 658 <button type="submit" class="havenlytics-btn-primary havenlytics-btn-style-2">Send 659 Email</button> 660 </form> 661 </div> 662 </div> 663 664 665 666 667 </div> 668 </div> 669 </div> 670 671 672 <!-- Similar Listings --> 673 <div class="havenlytics-similar-list"> 674 <div class="havenlytics-similar-section-heading"> 675 <h2><?php esc_html_e('Similar Property Listings', 'havenlytics'); ?></h2> 676 <div class="havenlytics-similar-line"> 677 <span class="havenlytics-similar-line1"></span> 678 <span class="havenlytics-similar-line2"></span> 679 </div> 680 <p><?php esc_html_e('Explore properties with similar features and locations', 'havenlytics'); ?></p> 681 </div> 682 <div class="row"> 683 <div class="col-md-12"> 684 <div class="havenlytics-similar-slider owl-carousel"> 685 <?php 865 <?php endif; ?> 866 867 </div> 868 </div> 869 </div> 870 871 872 <!-- Similar Listings --> 873 <div class="havenlytics-similar-list"> 874 <div class="havenlytics-similar-section-heading"> 875 <h2><?php esc_html_e('Similar Property Listings', 'havenlytics'); ?></h2> 876 <div class="havenlytics-similar-line"> 877 <span class="havenlytics-similar-line1"></span> 878 <span class="havenlytics-similar-line2"></span> 879 </div> 880 <p><?php esc_html_e('Explore properties with similar features and locations', 'havenlytics'); ?></p> 881 </div> 882 <div class="row"> 883 <div class="col-md-12"> 884 <div class="havenlytics-similar-slider owl-carousel"> 885 <?php 686 886 $current_post_id = get_the_ID(); 687 887 … … 781 981 } 782 982 ?> 783 <!-- Property Card -->784 <div class="havenlytics-property-card-grid">785 <div class="havenlytics-property-grid-item">786 <div class="havenlytics-property-thumbnail-item">787 <div class="havenlytics-related-carousel-thumbnail">788 <?php if (has_post_thumbnail()) : ?>789 <?php the_post_thumbnail('havenlytics-property-related-thumb', array(983 <!-- Property Card --> 984 <div class="havenlytics-property-card-grid"> 985 <div class="havenlytics-property-grid-item"> 986 <div class="havenlytics-property-thumbnail-item"> 987 <div class="havenlytics-related-carousel-thumbnail"> 988 <?php if (has_post_thumbnail()) : ?> 989 <?php the_post_thumbnail('havenlytics-property-related-thumb', array( 790 990 'alt' => esc_attr(get_the_title()), 791 991 'class' => 'img-fluid' 792 992 )); ?> 793 <?php else : ?> 794 <img src="<?php echo esc_url(HVNLY_PROPERTY_URL . 'public/assets/img/video-placeholder.png'); ?>" 795 alt="<?php esc_attr_e('Property Image', 'havenlytics'); ?>" 796 class="img-fluid" width="400" height="300" <?php endif; ?> </div> 797 798 <?php if ($price) : ?> 799 <div class="havenlytics-property-amount"> 800 <h5> 801 <span> 802 <?php echo esc_html($currency_symbol); ?> 803 <?php echo esc_html($price); ?> 804 </span> 805 </h5> 806 </div> 807 <?php endif; ?> 808 809 <?php if ($status_badge) : ?> 810 <div class="havenlytics-property-featured"> 811 <span><?php echo esc_html($status_badge); ?></span> 812 </div> 813 <?php endif; ?> 993 <?php else : ?> 994 <img src="<?php echo esc_url(HVNLY_PROPERTY_URL . 'public/assets/img/video-placeholder.png'); ?>" 995 alt="<?php esc_attr_e('Property Image', 'havenlytics'); ?>" 996 class="img-fluid" width="400" height="300" <?php endif; ?> </div> 997 998 <?php if ($price) : ?> 999 <div class="havenlytics-property-amount"> 1000 <h5> 1001 <span> 1002 <?php echo esc_html($currency_symbol); ?> 1003 <?php echo esc_html($price); ?> 1004 </span> 1005 </h5> 1006 </div> 1007 <?php endif; ?> 1008 1009 <?php if ($status_badge) : ?> 1010 <div class="havenlytics-property-featured"> 1011 <span><?php echo esc_html($status_badge); ?></span> 1012 </div> 1013 <?php endif; ?> 1014 </div> 1015 1016 <div class="havenlytics-property--content"> 1017 <h3 class="havenlytics-property-title"> 1018 <a 1019 href="<?php the_permalink(); ?>"><?php echo esc_html(wp_trim_words(get_the_title(), 4, '...')); ?></a> 1020 </h3> 1021 1022 <?php if ($address) : ?> 1023 <p class="havenlytics-property-location"> 1024 <svg class="custom-icon" width="20px" height="20px" viewBox="0 0 24 24" 1025 fill="#6C60FE"> 1026 <path 1027 d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z"> 1028 </path> 1029 </svg> 1030 <?php echo esc_html($address); ?> 1031 </p> 1032 <?php endif; ?> 1033 1034 <ul class="d-flex havenlytics-property-short-details"> 1035 <?php if ($bedrooms) : ?> 1036 <li> 1037 <div class="heavenlytics-property-meta-item"> 1038 <!-- Bedrooms SVG --> 1039 <svg fill="#6C60FE" width="20px" height="20px" 1040 viewBox="0 -11.47 122.88 122.88" version="1.1" id="Layer_1" 1041 xmlns="http://www.w3.org/2000/svg" 1042 xmlns:xlink="http://www.w3.org/1999/xlink" 1043 style="enable-background:new 0 0 122.88 99.94" 1044 xml:space="preserve"> 1045 <g id="SVGRepo_bgCarrier" stroke-width="0"></g> 1046 <g id="SVGRepo_tracerCarrier" stroke-linecap="round" 1047 stroke-linejoin="round"></g> 1048 <g id="SVGRepo_iconCarrier"> 1049 <g> 1050 <path 1051 d="M4.22,67.36h114.31v-4.67c0-1.13-0.22-2.18-0.61-3.12c-0.42-1-1.04-1.89-1.81-2.66c-0.47-0.47-1-0.9-1.57-1.28 c-0.58-0.39-1.2-0.73-1.85-1.02c-1.75-0.38-3.49-0.74-5.22-1.08c-1.74-0.34-3.49-0.66-5.25-0.96c-0.08-0.01-0.14-0.02-0.22-0.04 c-0.89-0.15-1.74-0.29-2.55-0.42c-0.81-0.13-1.67-0.26-2.57-0.4l-0.02,0c-6.12-0.78-12.22-1.38-18.31-1.78 c-6.1-0.4-12.17-0.6-18.2-0.61c-3.58,0-7.15,0.06-10.72,0.2c-3.55,0.14-7.12,0.34-10.69,0.62l-0.02,0 c-3.34,0.31-6.67,0.7-10.01,1.15c-3.33,0.45-6.67,0.98-10.03,1.57l-0.37,0.09c-0.07,0.02-0.14,0.03-0.2,0.03 c-0.06,0.01-0.12,0.01-0.18,0.01c-1.57,0.28-3.18,0.59-4.84,0.92c-1.61,0.32-3.22,0.66-4.82,1.01c-0.4,0.22-0.78,0.47-1.14,0.73 c-0.36,0.27-0.71,0.56-1.02,0.87v0c-0.67,0.67-1.2,1.44-1.56,2.3c-0.34,0.81-0.53,1.71-0.53,2.69V67.36L4.22,67.36z M14.2,0h92.99 c1.21,0,2.37,0.24,3.43,0.68c1.1,0.46,2.09,1.13,2.92,1.95c0.83,0.83,1.5,1.82,1.95,2.92c0.44,1.06,0.68,2.22,0.68,3.43v42.69 c0.51,0.3,1.01,0.63,1.47,0.99c0.52,0.4,1.01,0.82,1.46,1.27c1.16,1.16,2.1,2.51,2.73,4.03c0.6,1.43,0.93,3.02,0.93,4.74v6.09 c0.03,0.1,0.06,0.2,0.08,0.3l0,0.02c0.02,0.13,0.03,0.25,0.03,0.37c0,0.13-0.01,0.26-0.04,0.39l0,0c-0.02,0.1-0.05,0.2-0.08,0.3 v27.66c0,0.58-0.24,1.11-0.62,1.49c-0.38,0.38-0.91,0.62-1.49,0.62h-4.35c-0.49,0-0.94-0.17-1.3-0.45 c-0.36-0.28-0.63-0.68-0.74-1.14c-0.8-2.3-1.61-4.12-2.48-5.54c-0.86-1.4-1.78-2.4-2.84-3.11c-1.07-0.71-2.35-1.16-3.9-1.43 c-1.58-0.28-3.42-0.37-5.61-0.36l-79.76,0.1l-0.04,0c-1.57-0.03-2.86,0.17-3.94,0.59c-1.07,0.42-1.94,1.05-2.66,1.86 c-0.81,0.9-1.49,2.05-2.11,3.39c-0.63,1.37-1.2,2.93-1.77,4.64l0,0c-0.14,0.44-0.42,0.79-0.77,1.04c-0.33,0.24-0.73,0.38-1.14,0.4 c-0.03,0.01-0.06,0.01-0.09,0.01H2.11c-0.58,0-1.11-0.24-1.49-0.62C0.24,98.94,0,98.41,0,97.83V61.52c0-1.57,0.3-3.01,0.84-4.31 c0.58-1.38,1.43-2.61,2.49-3.67c0.3-0.3,0.63-0.6,0.98-0.88c0.3-0.24,0.6-0.47,0.92-0.68V8.89c0-1.21,0.24-2.36,0.68-3.4 c0.46-1.09,1.13-2.07,1.96-2.89c0.83-0.82,1.82-1.47,2.91-1.92C11.84,0.24,12.99,0,14.2,0L14.2,0z M107.19,4.22H14.2 c-0.65,0-1.27,0.13-1.84,0.36c-0.59,0.24-1.11,0.59-1.55,1.02c-0.43,0.42-0.78,0.94-1.02,1.5C9.57,7.65,9.45,8.25,9.45,8.89v41.06 c0.3-0.1,0.6-0.18,0.91-0.26c0.49-0.13,0.98-0.24,1.47-0.32c0.68-0.12,1.42-0.25,2.22-0.39c0.6-0.1,1.24-0.21,1.9-0.31V38.19 c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55c1.38-0.57,2.89-0.89,4.47-0.89h19.82 c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81c0.57,1.38,0.89,2.89,0.89,4.47v6.69 c0.7-0.01,1.4-0.01,2.11-0.01v-6.68c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55 c1.38-0.57,2.89-0.89,4.47-0.89h19.82c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81 c0.57,1.38,0.89,2.89,0.89,4.47v10.34c0.75,0.11,1.55,0.24,2.41,0.38c0.95,0.15,1.86,0.3,2.74,0.45c0.45,0.08,0.91,0.17,1.37,0.28 c0.29,0.07,0.57,0.14,0.84,0.22V8.98c0-0.64-0.13-1.25-0.36-1.81c-0.24-0.58-0.6-1.1-1.04-1.55c-0.44-0.44-0.97-0.8-1.54-1.04 C108.44,4.35,107.83,4.22,107.19,4.22L107.19,4.22z M43.21,45.56c2.01-0.15,4.03-0.28,6.08-0.38c1.89-0.1,3.8-0.17,5.71-0.22v-6.77 c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64c-0.88-0.37-1.85-0.57-2.86-0.57H27.67 c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44c-0.37,0.88-0.57,1.85-0.57,2.86V48 c1.62-0.24,3.26-0.46,4.94-0.68c1.81-0.23,3.61-0.44,5.39-0.64c0.69-0.08,1.43-0.17,2.2-0.25c0.72-0.08,1.47-0.15,2.27-0.23 c1.36-0.13,2.71-0.25,4.04-0.36C40.37,45.75,41.77,45.65,43.21,45.56L43.21,45.56z M65.54,44.9c1.21,0.02,2.42,0.05,3.63,0.09 c1.34,0.04,2.68,0.1,4.01,0.16l0.01,0c2.19,0.08,4.33,0.18,6.41,0.3c2.08,0.12,4.11,0.27,6.05,0.44c2.82,0.25,5.55,0.55,8.14,0.9 c2.32,0.32,4.52,0.68,6.58,1.08v-9.68c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64 c-0.88-0.37-1.85-0.57-2.86-0.57H73.05c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44 c-0.37,0.88-0.57,1.85-0.57,2.86V44.9L65.54,44.9z M118.54,71.59H4.22v24.13h1.43c0.56-1.58,1.14-3.05,1.79-4.36 c0.7-1.4,1.49-2.64,2.45-3.71c1.14-1.28,2.48-2.27,4.09-2.93c1.61-0.65,3.49-0.98,5.75-0.93l79.69-0.1c2.57,0,4.77,0.12,6.69,0.49 c1.95,0.37,3.63,1,5.14,2c1.4,0.93,2.6,2.16,3.68,3.77c1.03,1.54,1.95,3.43,2.83,5.76h0.76V71.59L118.54,71.59z"> 1052 </path> 1053 </g> 1054 </g> 1055 </svg> 1056 <?php echo esc_html($bedrooms); ?> 1057 <?php esc_html_e('Beds', 'havenlytics'); ?> 814 1058 </div> 815 816 <div class="havenlytics-property--content"> 817 <h3 class="havenlytics-property-title"> 818 <a 819 href="<?php the_permalink(); ?>"><?php echo esc_html(wp_trim_words(get_the_title(), 4, '...')); ?></a> 820 </h3> 821 822 <?php if ($address) : ?> 823 <p class="havenlytics-property-location"> 824 <svg class="custom-icon" width="20px" height="20px" viewBox="0 0 24 24" 825 fill="#6C60FE"> 1059 </li> 1060 <?php endif; ?> 1061 1062 <?php if ($bathrooms) : ?> 1063 <li> 1064 <div class="heavenlytics-property-meta-item"> 1065 <!-- Bathrooms SVG --> 1066 <svg fill="#6C60FE" width="20px" height="20px" 1067 viewBox="0 0 512 512" id="Layer_1" 1068 enable-background="new 0 0 512 512" 1069 xmlns="http://www.w3.org/2000/svg"> 1070 <g id="SVGRepo_bgCarrier" stroke-width="0"></g> 1071 <g id="SVGRepo_tracerCarrier" stroke-linecap="round" 1072 stroke-linejoin="round"></g> 1073 <g id="SVGRepo_iconCarrier"> 1074 <g> 826 1075 <path 827 d=" M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z">1076 d="m496 288c-38.154 0-437.487 0-448 0v-56h32c8.837 0 16-7.164 16-16v-40c0-8.836-7.163-16-16-16s-16 7.164-16 16v24h-16v-138.745c0-25.903 31.562-39.064 49.941-20.686l16.94 16.94c-13.424 23.401-10.164 53.835 9.805 73.805l8 8c6.247 6.248 16.379 6.249 22.627 0l64-64c6.249-6.248 6.249-16.379 0-22.627l-8-8c-20.35-20.351-50.837-23.06-73.817-9.817l-16.928-16.928c-11.57-11.57-26.952-17.942-43.313-17.942-33.776 0-61.255 27.479-61.255 61.255v226.745c-8.837 0-16 7.164-16 16s7.163 16 16 16v32c0 43.889 19.742 83.247 50.806 109.681l-22.338 23.229c-9.803 10.193-2.445 27.09 11.53 27.09 4.199 0 8.394-1.644 11.534-4.91l26.218-27.263c19.844 10.326 42.376 16.173 66.25 16.173h192c23.874 0 46.406-5.847 66.25-16.173l26.218 27.263c6.106 6.35 16.234 6.585 22.623.442 6.369-6.125 6.566-16.254.441-22.623l-22.338-23.229c31.064-26.433 50.806-65.791 50.806-109.68v-32c8.837 0 16-7.164 16-16s-7.163-16-16-16zm-310.89-223.738-40.845 40.845c-8.246-11.427-7.23-27.515 3.048-37.794 10.378-10.377 26.461-11.259 37.797-3.051zm278.89 287.738c0 61.757-50.243 112-112 112h-192c-61.757 0-112-50.243-112-112v-32h416z"> 828 1077 </path> 829 </svg> 830 <?php echo esc_html($address); ?> 831 </p> 832 <?php endif; ?> 833 834 <ul class="d-flex havenlytics-property-short-details"> 835 <?php if ($bedrooms) : ?> 836 <li> 837 <div class="heavenlytics-property-meta-item"> 838 <!-- Bedrooms SVG --> 839 <svg fill="#6C60FE" width="20px" height="20px" 840 viewBox="0 -11.47 122.88 122.88" version="1.1" id="Layer_1" 841 xmlns="http://www.w3.org/2000/svg" 842 xmlns:xlink="http://www.w3.org/1999/xlink" 843 style="enable-background:new 0 0 122.88 99.94" 844 xml:space="preserve"> 845 <g id="SVGRepo_bgCarrier" stroke-width="0"></g> 846 <g id="SVGRepo_tracerCarrier" stroke-linecap="round" 847 stroke-linejoin="round"></g> 848 <g id="SVGRepo_iconCarrier"> 849 <g> 850 <path 851 d="M4.22,67.36h114.31v-4.67c0-1.13-0.22-2.18-0.61-3.12c-0.42-1-1.04-1.89-1.81-2.66c-0.47-0.47-1-0.9-1.57-1.28 c-0.58-0.39-1.2-0.73-1.85-1.02c-1.75-0.38-3.49-0.74-5.22-1.08c-1.74-0.34-3.49-0.66-5.25-0.96c-0.08-0.01-0.14-0.02-0.22-0.04 c-0.89-0.15-1.74-0.29-2.55-0.42c-0.81-0.13-1.67-0.26-2.57-0.4l-0.02,0c-6.12-0.78-12.22-1.38-18.31-1.78 c-6.1-0.4-12.17-0.6-18.2-0.61c-3.58,0-7.15,0.06-10.72,0.2c-3.55,0.14-7.12,0.34-10.69,0.62l-0.02,0 c-3.34,0.31-6.67,0.7-10.01,1.15c-3.33,0.45-6.67,0.98-10.03,1.57l-0.37,0.09c-0.07,0.02-0.14,0.03-0.2,0.03 c-0.06,0.01-0.12,0.01-0.18,0.01c-1.57,0.28-3.18,0.59-4.84,0.92c-1.61,0.32-3.22,0.66-4.82,1.01c-0.4,0.22-0.78,0.47-1.14,0.73 c-0.36,0.27-0.71,0.56-1.02,0.87v0c-0.67,0.67-1.2,1.44-1.56,2.3c-0.34,0.81-0.53,1.71-0.53,2.69V67.36L4.22,67.36z M14.2,0h92.99 c1.21,0,2.37,0.24,3.43,0.68c1.1,0.46,2.09,1.13,2.92,1.95c0.83,0.83,1.5,1.82,1.95,2.92c0.44,1.06,0.68,2.22,0.68,3.43v42.69 c0.51,0.3,1.01,0.63,1.47,0.99c0.52,0.4,1.01,0.82,1.46,1.27c1.16,1.16,2.1,2.51,2.73,4.03c0.6,1.43,0.93,3.02,0.93,4.74v6.09 c0.03,0.1,0.06,0.2,0.08,0.3l0,0.02c0.02,0.13,0.03,0.25,0.03,0.37c0,0.13-0.01,0.26-0.04,0.39l0,0c-0.02,0.1-0.05,0.2-0.08,0.3 v27.66c0,0.58-0.24,1.11-0.62,1.49c-0.38,0.38-0.91,0.62-1.49,0.62h-4.35c-0.49,0-0.94-0.17-1.3-0.45 c-0.36-0.28-0.63-0.68-0.74-1.14c-0.8-2.3-1.61-4.12-2.48-5.54c-0.86-1.4-1.78-2.4-2.84-3.11c-1.07-0.71-2.35-1.16-3.9-1.43 c-1.58-0.28-3.42-0.37-5.61-0.36l-79.76,0.1l-0.04,0c-1.57-0.03-2.86,0.17-3.94,0.59c-1.07,0.42-1.94,1.05-2.66,1.86 c-0.81,0.9-1.49,2.05-2.11,3.39c-0.63,1.37-1.2,2.93-1.77,4.64l0,0c-0.14,0.44-0.42,0.79-0.77,1.04c-0.33,0.24-0.73,0.38-1.14,0.4 c-0.03,0.01-0.06,0.01-0.09,0.01H2.11c-0.58,0-1.11-0.24-1.49-0.62C0.24,98.94,0,98.41,0,97.83V61.52c0-1.57,0.3-3.01,0.84-4.31 c0.58-1.38,1.43-2.61,2.49-3.67c0.3-0.3,0.63-0.6,0.98-0.88c0.3-0.24,0.6-0.47,0.92-0.68V8.89c0-1.21,0.24-2.36,0.68-3.4 c0.46-1.09,1.13-2.07,1.96-2.89c0.83-0.82,1.82-1.47,2.91-1.92C11.84,0.24,12.99,0,14.2,0L14.2,0z M107.19,4.22H14.2 c-0.65,0-1.27,0.13-1.84,0.36c-0.59,0.24-1.11,0.59-1.55,1.02c-0.43,0.42-0.78,0.94-1.02,1.5C9.57,7.65,9.45,8.25,9.45,8.89v41.06 c0.3-0.1,0.6-0.18,0.91-0.26c0.49-0.13,0.98-0.24,1.47-0.32c0.68-0.12,1.42-0.25,2.22-0.39c0.6-0.1,1.24-0.21,1.9-0.31V38.19 c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55c1.38-0.57,2.89-0.89,4.47-0.89h19.82 c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81c0.57,1.38,0.89,2.89,0.89,4.47v6.69 c0.7-0.01,1.4-0.01,2.11-0.01v-6.68c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55 c1.38-0.57,2.89-0.89,4.47-0.89h19.82c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81 c0.57,1.38,0.89,2.89,0.89,4.47v10.34c0.75,0.11,1.55,0.24,2.41,0.38c0.95,0.15,1.86,0.3,2.74,0.45c0.45,0.08,0.91,0.17,1.37,0.28 c0.29,0.07,0.57,0.14,0.84,0.22V8.98c0-0.64-0.13-1.25-0.36-1.81c-0.24-0.58-0.6-1.1-1.04-1.55c-0.44-0.44-0.97-0.8-1.54-1.04 C108.44,4.35,107.83,4.22,107.19,4.22L107.19,4.22z M43.21,45.56c2.01-0.15,4.03-0.28,6.08-0.38c1.89-0.1,3.8-0.17,5.71-0.22v-6.77 c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64c-0.88-0.37-1.85-0.57-2.86-0.57H27.67 c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44c-0.37,0.88-0.57,1.85-0.57,2.86V48 c1.62-0.24,3.26-0.46,4.94-0.68c1.81-0.23,3.61-0.44,5.39-0.64c0.69-0.08,1.43-0.17,2.2-0.25c0.72-0.08,1.47-0.15,2.27-0.23 c1.36-0.13,2.71-0.25,4.04-0.36C40.37,45.75,41.77,45.65,43.21,45.56L43.21,45.56z M65.54,44.9c1.21,0.02,2.42,0.05,3.63,0.09 c1.34,0.04,2.68,0.1,4.01,0.16l0.01,0c2.19,0.08,4.33,0.18,6.41,0.3c2.08,0.12,4.11,0.27,6.05,0.44c2.82,0.25,5.55,0.55,8.14,0.9 c2.32,0.32,4.52,0.68,6.58,1.08v-9.68c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64 c-0.88-0.37-1.85-0.57-2.86-0.57H73.05c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44 c-0.37,0.88-0.57,1.85-0.57,2.86V44.9L65.54,44.9z M118.54,71.59H4.22v24.13h1.43c0.56-1.58,1.14-3.05,1.79-4.36 c0.7-1.4,1.49-2.64,2.45-3.71c1.14-1.28,2.48-2.27,4.09-2.93c1.61-0.65,3.49-0.98,5.75-0.93l79.69-0.1c2.57,0,4.77,0.12,6.69,0.49 c1.95,0.37,3.63,1,5.14,2c1.4,0.93,2.6,2.16,3.68,3.77c1.03,1.54,1.95,3.43,2.83,5.76h0.76V71.59L118.54,71.59z"> 852 </path> 853 </g> 854 </g> 855 </svg> 856 <?php echo esc_html($bedrooms); ?> 857 <?php esc_html_e('Beds', 'havenlytics'); ?> 858 </div> 859 </li> 860 <?php endif; ?> 861 862 <?php if ($bathrooms) : ?> 863 <li> 864 <div class="heavenlytics-property-meta-item"> 865 <!-- Bathrooms SVG --> 866 <svg fill="#6C60FE" width="20px" height="20px" 867 viewBox="0 0 512 512" id="Layer_1" 868 enable-background="new 0 0 512 512" 869 xmlns="http://www.w3.org/2000/svg"> 870 <g id="SVGRepo_bgCarrier" stroke-width="0"></g> 871 <g id="SVGRepo_tracerCarrier" stroke-linecap="round" 872 stroke-linejoin="round"></g> 873 <g id="SVGRepo_iconCarrier"> 874 <g> 875 <path 876 d="m496 288c-38.154 0-437.487 0-448 0v-56h32c8.837 0 16-7.164 16-16v-40c0-8.836-7.163-16-16-16s-16 7.164-16 16v24h-16v-138.745c0-25.903 31.562-39.064 49.941-20.686l16.94 16.94c-13.424 23.401-10.164 53.835 9.805 73.805l8 8c6.247 6.248 16.379 6.249 22.627 0l64-64c6.249-6.248 6.249-16.379 0-22.627l-8-8c-20.35-20.351-50.837-23.06-73.817-9.817l-16.928-16.928c-11.57-11.57-26.952-17.942-43.313-17.942-33.776 0-61.255 27.479-61.255 61.255v226.745c-8.837 0-16 7.164-16 16s7.163 16 16 16v32c0 43.889 19.742 83.247 50.806 109.681l-22.338 23.229c-9.803 10.193-2.445 27.09 11.53 27.09 4.199 0 8.394-1.644 11.534-4.91l26.218-27.263c19.844 10.326 42.376 16.173 66.25 16.173h192c23.874 0 46.406-5.847 66.25-16.173l26.218 27.263c6.106 6.35 16.234 6.585 22.623.442 6.369-6.125 6.566-16.254.441-22.623l-22.338-23.229c31.064-26.433 50.806-65.791 50.806-109.68v-32c8.837 0 16-7.164 16-16s-7.163-16-16-16zm-310.89-223.738-40.845 40.845c-8.246-11.427-7.23-27.515 3.048-37.794 10.378-10.377 26.461-11.259 37.797-3.051zm278.89 287.738c0 61.757-50.243 112-112 112h-192c-61.757 0-112-50.243-112-112v-32h416z"> 877 </path> 878 </g> 879 </g> 880 </svg> 881 <?php echo esc_html($bathrooms); ?> 882 <?php esc_html_e('Baths', 'havenlytics'); ?> 883 </div> 884 </li> 885 <?php endif; ?> 886 887 <?php if ($sqft) : ?> 888 <li> 889 <div class="heavenlytics-property-meta-item"> 890 <!-- Area SVG --> 891 <svg fill="#6C60FE" width="20px" height="20px" 892 viewBox="0 0 256 256" id="Flat" 893 xmlns="http://www.w3.org/2000/svg"> 894 <g id="SVGRepo_bgCarrier" stroke-width="0"></g> 895 <g id="SVGRepo_tracerCarrier" stroke-linecap="round" 896 stroke-linejoin="round" stroke="#CCCCCC" 897 stroke-width="7.68"></g> 898 <g id="SVGRepo_iconCarrier"> 899 <path 900 d="M240,211.98316H227.99414v-108a12.01343,12.01343,0,0,0-12-12h-68v-52a12.01343,12.01343,0,0,0-12-12h-96a12.01343,12.01343,0,0,0-12,12v172H16a4,4,0,0,0,0,8H240a4,4,0,0,0,0-8Zm-24.00586-112a4.00426,4.00426,0,0,1,4,4v108h-72v-112Zm-180-60a4.00427,4.00427,0,0,1,4-4h96a4.00426,4.00426,0,0,1,4,4v172h-104Zm24,32a4.0002,4.0002,0,0,1,4-4h32a4,4,0,1,1,0,8h-32A4.0002,4.0002,0,0,1,59.99414,71.98316Zm56,64a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,115.99414,135.98316Zm-16,40a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,99.99414,175.98316Zm96,0a4.0002,4.0002,0,0,1-4,4h-16a4,4,0,0,1,0-8h16A4.0002,4.0002,0,0,1,195.99414,175.98316Zm-24-40a4.0002,4.0002,0,0,1,4-4h16a4,4,0,1,1,0,8h-16A4.0002,4.0002,0,0,1,171.99414,135.98316Z"> 901 </path> 902 </g> 903 </svg> 904 <?php echo esc_html(number_format($sqft)); ?> 905 <?php esc_html_e('sqft', 'havenlytics'); ?> 906 </div> 907 </li> 908 <?php endif; ?> 909 </ul> 910 911 <ul 912 class="havenlytics-property-category d-flex justify-content-between align-items-center"> 913 <li> 914 <a href="<?php the_permalink(); ?>" 915 class="havenlytics-btn-primary havenlytics-btn-style-1"> 916 <?php esc_html_e('View Property', 'havenlytics'); ?> 917 </a> 918 </li> 919 </ul> 1078 </g> 1079 </g> 1080 </svg> 1081 <?php echo esc_html($bathrooms); ?> 1082 <?php esc_html_e('Baths', 'havenlytics'); ?> 920 1083 </div> 921 </div> 922 </div> 923 <!-- /Property Card --> 924 <?php 1084 </li> 1085 <?php endif; ?> 1086 1087 <?php if ($sqft) : ?> 1088 <li> 1089 <div class="heavenlytics-property-meta-item"> 1090 <!-- Area SVG --> 1091 <svg fill="#6C60FE" width="20px" height="20px" 1092 viewBox="0 0 256 256" id="Flat" 1093 xmlns="http://www.w3.org/2000/svg"> 1094 <g id="SVGRepo_bgCarrier" stroke-width="0"></g> 1095 <g id="SVGRepo_tracerCarrier" stroke-linecap="round" 1096 stroke-linejoin="round" stroke="#CCCCCC" 1097 stroke-width="7.68"></g> 1098 <g id="SVGRepo_iconCarrier"> 1099 <path 1100 d="M240,211.98316H227.99414v-108a12.01343,12.01343,0,0,0-12-12h-68v-52a12.01343,12.01343,0,0,0-12-12h-96a12.01343,12.01343,0,0,0-12,12v172H16a4,4,0,0,0,0,8H240a4,4,0,0,0,0-8Zm-24.00586-112a4.00426,4.00426,0,0,1,4,4v108h-72v-112Zm-180-60a4.00427,4.00427,0,0,1,4-4h96a4.00426,4.00426,0,0,1,4,4v172h-104Zm24,32a4.0002,4.0002,0,0,1,4-4h32a4,4,0,1,1,0,8h-32A4.0002,4.0002,0,0,1,59.99414,71.98316Zm56,64a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,115.99414,135.98316Zm-16,40a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,99.99414,175.98316Zm96,0a4.0002,4.0002,0,0,1-4,4h-16a4,4,0,0,1,0-8h16A4.0002,4.0002,0,0,1,195.99414,175.98316Zm-24-40a4.0002,4.0002,0,0,1,4-4h16a4,4,0,1,1,0,8h-16A4.0002,4.0002,0,0,1,171.99414,135.98316Z"> 1101 </path> 1102 </g> 1103 </svg> 1104 <?php echo esc_html(number_format($sqft)); ?> 1105 <?php esc_html_e('sqft', 'havenlytics'); ?> 1106 </div> 1107 </li> 1108 <?php endif; ?> 1109 </ul> 1110 1111 <ul 1112 class="havenlytics-property-category d-flex justify-content-between align-items-center"> 1113 <li> 1114 <a href="<?php the_permalink(); ?>" 1115 class="havenlytics-btn-primary havenlytics-btn-style-1"> 1116 <?php esc_html_e('View Property', 'havenlytics'); ?> 1117 </a> 1118 </li> 1119 </ul> 1120 </div> 1121 </div> 1122 </div> 1123 <!-- /Property Card --> 1124 <?php 925 1125 endwhile; 926 1126 wp_reset_postdata(); 927 1127 else : ?> 928 <p><?php esc_html_e('No similar properties found.', 'havenlytics'); ?></p> 929 <?php endif; ?> 930 </div> 1128 <p><?php esc_html_e('No similar properties found.', 'havenlytics'); ?></p> 1129 <?php endif; ?> 931 1130 </div> 932 1131 </div> 933 1132 </div> 934 <!-- /Similar Listings --> 935 936 937 </div> 938 </div> 1133 </div> 1134 <!-- /Similar Listings --> 1135 1136 1137 </div> 1138 </div> 939 1139 940 1140 <?php endwhile; ?> 941 </div>942 943 944 945 946 947 <!-- Make Enquiry Popup -->948 <div class="havenlytics_popup_overlay" id="havenlytics_popup_enquiry">949 <div class="havenlytics_popup_container havenlytics_popup_animate_flip">950 <div class="fullscreen-indicator">Full Screen Mode</div>951 <div class="havenlytics_popup_controls">952 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen">953 <i class="fas fa-expand"></i>954 </div>955 <div class="havenlytics_popup_control_btn havenlytics_popup_close">956 <i class="fas fa-times"></i>957 </div>958 </div>959 <div class="havenlytics_popup_content">960 <h2 class="havenlytics_popup_title">Book Property</h2>961 <p>Fill out the form below and our team will get back to you as soon as possible.</p>962 963 <div class="havenlytics_popup_form">964 <?php1141 </div> 1142 1143 1144 1145 1146 1147 <!-- Make Enquiry Popup --> 1148 <div class="havenlytics_popup_overlay" id="havenlytics_popup_enquiry"> 1149 <div class="havenlytics_popup_container havenlytics_popup_animate_flip"> 1150 <div class="fullscreen-indicator">Full Screen Mode</div> 1151 <div class="havenlytics_popup_controls"> 1152 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1153 <i class="fas fa-expand"></i> 1154 </div> 1155 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1156 <i class="fas fa-times"></i> 1157 </div> 1158 </div> 1159 <div class="havenlytics_popup_content"> 1160 <h2 class="havenlytics_popup_title">Book Property</h2> 1161 <p>Fill out the form below and our team will get back to you as soon as possible.</p> 1162 1163 <div class="havenlytics_popup_form"> 1164 <?php 965 1165 $book_property = get_post_meta($post->ID, '_havenlytics_property_book_property', true); 966 1166 … … 970 1170 ?> 971 1171 972 </div>973 1172 </div> 974 1173 </div> 975 1174 </div> 976 977 <!-- Virtual Tour Popup --> 978 <div class="havenlytics_popup_overlay" id="havenlytics_popup_virtualTour"> 979 <div class="havenlytics_popup_container havenlytics_popup_animate_3d"> 980 <div class="fullscreen-indicator">Full Screen Mode</div> 981 <div class="havenlytics_popup_controls"> 982 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 983 <i class="fas fa-expand"></i> 984 </div> 985 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 986 <i class="fas fa-times"></i> 987 </div> 988 </div> 989 <div class="havenlytics_popup_content"> 990 <h2 class="havenlytics_popup_title">3D Virtual Tour</h2> 991 <p>Explore this beautiful property through our immersive 360° virtual tour.</p> 992 993 <?php 1175 </div> 1176 1177 <!-- Virtual Tour Popup --> 1178 <div class="havenlytics_popup_overlay" id="havenlytics_popup_virtualTour"> 1179 <div class="havenlytics_popup_container havenlytics_popup_animate_3d"> 1180 <div class="fullscreen-indicator">Full Screen Mode</div> 1181 <div class="havenlytics_popup_controls"> 1182 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1183 <i class="fas fa-expand"></i> 1184 </div> 1185 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1186 <i class="fas fa-times"></i> 1187 </div> 1188 </div> 1189 <div class="havenlytics_popup_content"> 1190 <h2 class="havenlytics_popup_title">3D Virtual Tour</h2> 1191 <p>Explore this beautiful property through our immersive 360° virtual tour.</p> 1192 1193 <?php 994 1194 $virtual_tour_url = get_post_meta($post->ID, '_havenlytics_property_virtual_tour', true); 995 1195 ?> 996 1196 997 <div class="havenlytics_popup_virtual_tour" style="height: 100vh;"> 998 <?php if (!empty($virtual_tour_url)) : ?> 999 <iframe src="<?php echo esc_url($virtual_tour_url); ?>" width="100%" height="100%" frameborder="0" 1000 allowfullscreen loading="lazy" style="border: none; height: 100%; width: 100%;"></iframe> 1001 <?php else : ?> 1002 <div class="virtual-tour-placeholder"> 1003 <i class="fas fa-vr-cardboard"></i> 1004 <h3>Interactive 3D Tour</h3> 1005 <p>Navigate through each room with our virtual reality experience</p> 1006 </div> 1007 <?php endif; ?> 1008 </div> 1009 1010 1011 </div> 1197 <div class="havenlytics_popup_virtual_tour" style="height: 100vh;"> 1198 <?php if (!empty($virtual_tour_url)) : ?> 1199 <iframe src="<?php echo esc_url($virtual_tour_url); ?>" width="100%" height="100%" frameborder="0" 1200 allowfullscreen loading="lazy" style="border: none; height: 100%; width: 100%;"></iframe> 1201 <?php else : ?> 1202 <div class="virtual-tour-placeholder"> 1203 <i class="fas fa-vr-cardboard"></i> 1204 <h3>Interactive 3D Tour</h3> 1205 <p>Navigate through each room with our virtual reality experience</p> 1206 </div> 1207 <?php endif; ?> 1208 </div> 1209 1210 1012 1211 </div> 1013 1212 </div> 1014 1015 <!-- Floorplan Popup --> 1016 <div class="havenlytics_popup_overlay" id="havenlytics_popup_floorplan"> 1017 <div class="havenlytics_popup_container havenlytics_popup_animate_slide"> 1018 <div class="fullscreen-indicator">Full Screen Mode</div> 1019 <div class="havenlytics_popup_controls"> 1020 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1021 <i class="fas fa-expand"></i> 1022 </div> 1023 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1024 <i class="fas fa-times"></i> 1025 </div> 1026 </div> 1027 <div class="havenlytics_popup_content"> 1028 <h2 class="havenlytics_popup_title">Property Floorplan</h2> 1029 <p>Detailed layout showing room dimensions and spatial relationships.</p> 1030 1031 1032 <?php 1213 </div> 1214 1215 <!-- Floorplan Popup --> 1216 <div class="havenlytics_popup_overlay" id="havenlytics_popup_floorplan"> 1217 <div class="havenlytics_popup_container havenlytics_popup_animate_slide"> 1218 <div class="fullscreen-indicator">Full Screen Mode</div> 1219 <div class="havenlytics_popup_controls"> 1220 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1221 <i class="fas fa-expand"></i> 1222 </div> 1223 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1224 <i class="fas fa-times"></i> 1225 </div> 1226 </div> 1227 <div class="havenlytics_popup_content"> 1228 <h2 class="havenlytics_popup_title">Property Floorplan</h2> 1229 <p>Detailed layout showing room dimensions and spatial relationships.</p> 1230 1231 1232 <?php 1033 1233 $floorplan_url = get_post_meta($post->ID, '_havenlytics_property_floorplan_img', true); 1034 1234 ?> 1035 1235 1036 1236 1037 <?php if (!empty($floorplan_url)) : ?> 1038 <img src="<?php echo esc_url($floorplan_url); ?>" alt="Property Floorplan" 1039 style="width: 100%; height: 100%; object-fit: cover; border-radius: 8px;"> 1040 <?php else : ?> 1041 <div class="havenlytics_popup_floorplan"> 1042 <div style="text-align: center; color: #7f8c8d;"> 1043 <i class="fas fa-drafting-compass" style="font-size: 4rem; margin-bottom: 15px;"></i> 1044 <h3>Detailed Floorplan</h3> 1045 <p>PDF document with measurements and layout</p> 1046 </div> 1047 </div> 1048 <?php endif; ?> 1049 1050 1051 1052 1053 1054 1055 </div> 1237 <?php if (!empty($floorplan_url)) : ?> 1238 <img src="<?php echo esc_url($floorplan_url); ?>" alt="Property Floorplan" 1239 style="width: 100%; height: 100%; object-fit: cover; border-radius: 8px;"> 1240 <?php else : ?> 1241 <div class="havenlytics_popup_floorplan"> 1242 <div style="text-align: center; color: #7f8c8d;"> 1243 <i class="fas fa-drafting-compass" style="font-size: 4rem; margin-bottom: 15px;"></i> 1244 <h3>Detailed Floorplan</h3> 1245 <p>PDF document with measurements and layout</p> 1246 </div> 1247 </div> 1248 <?php endif; ?> 1249 1250 1251 1252 1253 1254 1056 1255 </div> 1057 1256 </div> 1058 1059 <!-- Brochure Popup --> 1060 <div class="havenlytics_popup_overlay" id="havenlytics_popup_brochure"> 1061 <div class="havenlytics_popup_container havenlytics_popup_animate_rotate"> 1062 <div class="fullscreen-indicator">Full Screen Mode</div> 1063 <div class="havenlytics_popup_controls"> 1064 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1065 <i class="fas fa-expand"></i> 1066 </div> 1067 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1068 <i class="fas fa-times"></i> 1069 </div> 1070 </div> 1071 <?php 1257 </div> 1258 1259 <!-- Brochure Popup --> 1260 <div class="havenlytics_popup_overlay" id="havenlytics_popup_brochure"> 1261 <div class="havenlytics_popup_container havenlytics_popup_animate_rotate"> 1262 <div class="fullscreen-indicator">Full Screen Mode</div> 1263 <div class="havenlytics_popup_controls"> 1264 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1265 <i class="fas fa-expand"></i> 1266 </div> 1267 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1268 <i class="fas fa-times"></i> 1269 </div> 1270 </div> 1271 <?php 1072 1272 $brochure_pdf = get_post_meta(get_the_ID(), '_havenlytics_property_brochure_pdf', true); 1073 1273 ?> 1074 1274 1075 <div class="havenlytics_popup_content"> 1076 <h2 class="havenlytics_popup_title">Property Brochure</h2> 1077 <p>Download our comprehensive brochure with high-quality photos and details.</p> 1078 1079 <div class="havenlytics_popup_brochure"> 1080 <?php if (!empty($brochure_pdf)) : ?> 1081 <iframe src="<?php echo esc_url($brochure_pdf); ?>" width="100%" height="700" 1082 style="border: none;"></iframe> 1083 <?php else : ?> 1084 <div style="text-align: center; color: #7f8c8d;"> 1085 <i class="fas fa-file-pdf" style="font-size: 4rem; margin-bottom: 15px;"></i> 1086 <h3>Property Brochure</h3> 1087 <p>Detailed PDF document with all property information</p> 1088 </div> 1089 <?php endif; ?> 1090 </div> 1091 1275 <div class="havenlytics_popup_content"> 1276 <h2 class="havenlytics_popup_title">Property Brochure</h2> 1277 <p>Download our comprehensive brochure with high-quality photos and details.</p> 1278 1279 <div class="havenlytics_popup_brochure"> 1092 1280 <?php if (!empty($brochure_pdf)) : ?> 1093 <a href="<?php echo esc_url($brochure_pdf); ?>" download class="havenlytics_popup_submit" 1094 style="margin-top: 20px; display: inline-block;"> 1095 <i class="fas fa-download"></i> Download Brochure (PDF) 1096 </a> 1281 <iframe src="<?php echo esc_url($brochure_pdf); ?>" width="100%" height="700" 1282 style="border: none;"></iframe> 1283 <?php else : ?> 1284 <div style="text-align: center; color: #7f8c8d;"> 1285 <i class="fas fa-file-pdf" style="font-size: 4rem; margin-bottom: 15px;"></i> 1286 <h3>Property Brochure</h3> 1287 <p>Detailed PDF document with all property information</p> 1288 </div> 1097 1289 <?php endif; ?> 1098 1290 </div> 1099 1291 1100 </div> 1292 <?php if (!empty($brochure_pdf)) : ?> 1293 <a href="<?php echo esc_url($brochure_pdf); ?>" download class="havenlytics_popup_submit" 1294 style="margin-top: 20px; display: inline-block;"> 1295 <i class="fas fa-download"></i> Download Brochure (PDF) 1296 </a> 1297 <?php endif; ?> 1298 </div> 1299 1101 1300 </div> 1102 1103 <!-- View EPC Popup --> 1104 <div class="havenlytics_popup_overlay" id="havenlytics_popup_epc"> 1105 <div class="havenlytics_popup_container havenlytics_popup_animate_bounce"> 1106 <div class="fullscreen-indicator">Full Screen Mode</div> 1107 <div class="havenlytics_popup_controls"> 1108 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1109 <i class="fas fa-expand"></i> 1110 </div> 1111 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1112 <i class="fas fa-times"></i> 1113 </div> 1114 </div> 1115 <?php 1301 </div> 1302 1303 <!-- View EPC Popup --> 1304 <div class="havenlytics_popup_overlay" id="havenlytics_popup_epc"> 1305 <div class="havenlytics_popup_container havenlytics_popup_animate_bounce"> 1306 <div class="fullscreen-indicator">Full Screen Mode</div> 1307 <div class="havenlytics_popup_controls"> 1308 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1309 <i class="fas fa-expand"></i> 1310 </div> 1311 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1312 <i class="fas fa-times"></i> 1313 </div> 1314 </div> 1315 <?php 1116 1316 $epc_pdf = get_post_meta(get_the_ID(), '_havenlytics_property_epc_pdf', true); 1117 1317 ?> 1118 1318 1119 <div class="havenlytics_popup_content"> 1120 <h2 class="havenlytics_popup_title">Energy Performance Certificate</h2> 1121 <p>Energy efficiency rating of the property.</p> 1122 1123 <div class="havenlytics_popup_epc"> 1124 <?php if (!empty($epc_pdf)) : ?> 1125 <iframe src="<?php echo esc_url($epc_pdf); ?>" width="100%" height="700" 1126 style="border: 1px solid #ccc;" allowfullscreen> 1127 </iframe> 1128 <?php else : ?> 1129 <div style="text-align: center; color: #7f8c8d;"> 1130 <div style="font-size: 5rem; font-weight: bold; color: #27ae60; margin-bottom: 15px;">B</div> 1131 <h3>Energy Rating: B (82)</h3> 1132 <p>Potential Rating: A (94)</p> 1133 </div> 1134 <?php endif; ?> 1135 </div> 1136 1319 <div class="havenlytics_popup_content"> 1320 <h2 class="havenlytics_popup_title">Energy Performance Certificate</h2> 1321 <p>Energy efficiency rating of the property.</p> 1322 1323 <div class="havenlytics_popup_epc"> 1137 1324 <?php if (!empty($epc_pdf)) : ?> 1138 <a href="<?php echo esc_url($epc_pdf); ?>" target="_blank" class="havenlytics_popup_submit" 1139 style="margin-top: 20px; display: inline-block; text-align: center;"> 1140 <i class="fas fa-download"></i> Download EPC (PDF) 1141 </a> 1325 <iframe src="<?php echo esc_url($epc_pdf); ?>" width="100%" height="700" 1326 style="border: 1px solid #ccc;" allowfullscreen> 1327 </iframe> 1142 1328 <?php else : ?> 1143 <button class="havenlytics_popup_submit" style="margin-top: 20px;" disabled> 1144 <i class="fas fa-download"></i> Download EPC (PDF) 1145 </button> 1329 <div style="text-align: center; color: #7f8c8d;"> 1330 <div style="font-size: 5rem; font-weight: bold; color: #27ae60; margin-bottom: 15px;">B</div> 1331 <h3>Energy Rating: B (82)</h3> 1332 <p>Potential Rating: A (94)</p> 1333 </div> 1146 1334 <?php endif; ?> 1147 1335 </div> 1148 1336 1149 </div> 1337 <?php if (!empty($epc_pdf)) : ?> 1338 <a href="<?php echo esc_url($epc_pdf); ?>" target="_blank" class="havenlytics_popup_submit" 1339 style="margin-top: 20px; display: inline-block; text-align: center;"> 1340 <i class="fas fa-download"></i> Download EPC (PDF) 1341 </a> 1342 <?php else : ?> 1343 <button class="havenlytics_popup_submit" style="margin-top: 20px;" disabled> 1344 <i class="fas fa-download"></i> Download EPC (PDF) 1345 </button> 1346 <?php endif; ?> 1347 </div> 1348 1150 1349 </div> 1151 1152 <!-- Map Popup --> 1153 <div class="havenlytics_popup_overlay" id="havenlytics_popup_map"> 1154 <div class="havenlytics_popup_container havenlytics_popup_animate_zoom"> 1155 <div class="fullscreen-indicator">Full Screen Mode</div> 1156 <div class="havenlytics_popup_controls"> 1157 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1158 <i class="fas fa-expand"></i> 1159 </div> 1160 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1161 <i class="fas fa-times"></i> 1162 </div> 1163 </div> 1164 <?php 1350 </div> 1351 1352 <!-- Map Popup --> 1353 <div class="havenlytics_popup_overlay" id="havenlytics_popup_map"> 1354 <div class="havenlytics_popup_container havenlytics_popup_animate_zoom"> 1355 <div class="fullscreen-indicator">Full Screen Mode</div> 1356 <div class="havenlytics_popup_controls"> 1357 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1358 <i class="fas fa-expand"></i> 1359 </div> 1360 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1361 <i class="fas fa-times"></i> 1362 </div> 1363 </div> 1364 <?php 1165 1365 $map_url = get_post_meta(get_the_ID(), '_havenlytics_property_map_url', true); 1166 1366 ?> 1167 1367 1168 <div class="havenlytics_popup_content"> 1169 <h2 class="havenlytics_popup_title">Property Location</h2> 1170 <p>Located in a desirable neighborhood with excellent amenities.</p> 1171 1172 <div class="havenlytics_popup_map"> 1173 <?php if (!empty($map_url)) : ?> 1174 <iframe src="<?php echo esc_url($map_url); ?>" width="100%" height="700" style="border:0;" 1175 allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"> 1176 </iframe> 1177 <?php else : ?> 1178 <div style="text-align: center; color: #7f8c8d;"> 1179 <i class="fas fa-map-marked-alt" style="font-size: 4rem; margin-bottom: 15px;"></i> 1180 <h3>Interactive Map</h3> 1181 <p>Explore the neighborhood and nearby amenities</p> 1182 </div> 1183 <?php endif; ?> 1184 </div> 1185 </div> 1186 1187 </div> 1368 <div class="havenlytics_popup_content"> 1369 <h2 class="havenlytics_popup_title">Property Location</h2> 1370 <p>Located in a desirable neighborhood with excellent amenities.</p> 1371 1372 <div class="havenlytics_popup_map"> 1373 <?php if (!empty($map_url)) : ?> 1374 <iframe src="<?php echo esc_url($map_url); ?>" width="100%" height="700" style="border:0;" 1375 allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"> 1376 </iframe> 1377 <?php else : ?> 1378 <div style="text-align: center; color: #7f8c8d;"> 1379 <i class="fas fa-map-marked-alt" style="font-size: 4rem; margin-bottom: 15px;"></i> 1380 <h3>Interactive Map</h3> 1381 <p>Explore the neighborhood and nearby amenities</p> 1382 </div> 1383 <?php endif; ?> 1384 </div> 1385 </div> 1386 1188 1387 </div> 1189 1190 <!-- Arrange Viewing Popup --> 1191 <div class="havenlytics_popup_overlay" id="havenlytics_popup_viewing"> 1192 <div class="havenlytics_popup_container havenlytics_popup_animate_flip"> 1193 <div class="fullscreen-indicator">Full Screen Mode</div> 1194 <div class="havenlytics_popup_controls"> 1195 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1196 <i class="fas fa-expand"></i> 1197 </div> 1198 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1199 <i class="fas fa-times"></i> 1200 </div> 1201 </div> 1202 <div class="havenlytics_popup_content"> 1203 <h2 class="havenlytics_popup_title">Arrange a Viewing</h2> 1204 <p>Schedule a time to visit this property.</p> 1205 1206 <div class="havenlytics_popup_form"> 1207 <?php 1388 </div> 1389 1390 <!-- Arrange Viewing Popup --> 1391 <div class="havenlytics_popup_overlay" id="havenlytics_popup_viewing"> 1392 <div class="havenlytics_popup_container havenlytics_popup_animate_flip"> 1393 <div class="fullscreen-indicator">Full Screen Mode</div> 1394 <div class="havenlytics_popup_controls"> 1395 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1396 <i class="fas fa-expand"></i> 1397 </div> 1398 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1399 <i class="fas fa-times"></i> 1400 </div> 1401 </div> 1402 <div class="havenlytics_popup_content"> 1403 <h2 class="havenlytics_popup_title">Arrange a Viewing</h2> 1404 <p>Schedule a time to visit this property.</p> 1405 1406 <div class="havenlytics_popup_form"> 1407 <?php 1208 1408 $request_callback = get_post_meta($post->ID, '_havenlytics_property_request_call', true); 1209 1409 … … 1213 1413 ?> 1214 1414 1215 </div>1216 1415 </div> 1217 1416 </div> 1218 1417 </div> 1219 1220 <!-- Contact Agent Popup --> 1221 <div class="havenlytics_popup_overlay" id="havenlytics_popup_agent"> 1222 <div class="havenlytics_popup_container havenlytics_popup_animate_rotate"> 1223 <div class="fullscreen-indicator">Full Screen Mode</div> 1224 <div class="havenlytics_popup_controls"> 1225 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1226 <i class="fas fa-expand"></i> 1227 </div> 1228 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1229 <i class="fas fa-times"></i> 1230 </div> 1231 </div> 1232 <div class="havenlytics_popup_content"> 1233 <h2 class="havenlytics_popup_title">Request Call Back</h2> 1234 <p>Get in touch with our dedicated agent for this property.</p> 1235 1236 1237 1238 <div class="havenlytics_popup_form"> 1239 <?php 1418 </div> 1419 1420 <!-- Contact Agent Popup --> 1421 <div class="havenlytics_popup_overlay" id="havenlytics_popup_agent"> 1422 <div class="havenlytics_popup_container havenlytics_popup_animate_rotate"> 1423 <div class="fullscreen-indicator">Full Screen Mode</div> 1424 <div class="havenlytics_popup_controls"> 1425 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen"> 1426 <i class="fas fa-expand"></i> 1427 </div> 1428 <div class="havenlytics_popup_control_btn havenlytics_popup_close"> 1429 <i class="fas fa-times"></i> 1430 </div> 1431 </div> 1432 <div class="havenlytics_popup_content"> 1433 <h2 class="havenlytics_popup_title">Request Call Back</h2> 1434 <p>Get in touch with our dedicated agent for this property.</p> 1435 1436 1437 1438 <div class="havenlytics_popup_form"> 1439 <?php 1240 1440 $arrange_viewing = get_post_meta($post->ID, '_havenlytics_property_arrange_view', true); 1241 1441 … … 1245 1445 ?> 1246 1446 1247 </div>1248 1447 </div> 1249 1448 </div> 1250 1449 </div> 1251 1252 1253 1254 1255 <?php get_footer(); ?> 1450 </div> 1451 1452 1453 1454 1455 <?php get_footer(); ?>
Note: See TracChangeset
for help on using the changeset viewer.