This commit is contained in:
Lieu Le 2019-09-27 13:57:08 +07:00
parent 251eaf8ac5
commit 1815efd104
15 changed files with 213 additions and 106 deletions

@ -3702,14 +3702,12 @@ header#masthead {
display: flex; }
.opalestate-user-greeting .howdy {
float: right;
padding-left: 5px;
padding-right: 5px;
padding-top: 5px;
font-weight: 700; }
.opalestate-user-greeting .opalestate-popup
.popup-head {
float: left; }
.opalestate-user-greeting .popup-head {
float: right; }
.opalestate-user-greeting .popup-head a {
color: #FFF;
@ -3733,11 +3731,28 @@ header#masthead {
padding: 0;
margin: 0;
list-style: none; }
.opalestate-user-greeting ul li:hover .count {
background-color: #2f73e9;
color: #FFF; }
.opalestate-user-greeting .count {
color: #2f73e9;
padding: 3px 8px;
font-size: 11px;
min-width: 20px;
text-align: center;
background-color: #ebebeb;
border-radius: 50%;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
-ms-border-radius: 50%;
-o-border-radius: 50%;
margin-left: 5px; }
.dashboard-navbar {
background-color: #1d2329;
padding: 20px 30px;
border-left: 1px solid #282d33;
border-left: 1px solid #181c21;
margin-bottom: 15px; }
.dashboard-navbar ul {
margin-bottom: 0; }
@ -3794,7 +3809,7 @@ header#masthead {
content: "";
z-index: 2;
transform: translateX(-50%);
right: 25%;
right: -15px;
top: -14px;
border-bottom: 25px solid white;
border-left: 20px solid transparent;
@ -3894,17 +3909,15 @@ header#masthead {
background-color: #1d2329;
min-height: 900px;
position: fixed;
left: 0;
width: 251px;
height: 100%;
z-index: 100;
top: 0px; }
top: 0px;
left: 0;
border-right: 1px solid #21272e; }
.opalestate-user-management .user-dasboard-sidebar .navbar-brand {
text-align: center;
margin: 50px 0 60px 0; }
.opalestate-user-management .user-dasboard-sidebar .navbar-brand .custom-logo-link {
padding: 60px 30px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1); }
margin: 30px 0; }
.opalestate-user-management .user-dasboard-sidebar .user-dasboard-sidebar-inner {
padding-top: 20px; }
.opalestate-user-management .navbar-brand {
@ -3948,15 +3961,16 @@ header#masthead {
-o-border-radius: 50%;
margin-left: 5px; }
.opalestate-user-management .account-links a:hover, .opalestate-user-management .account-links a:focus {
color: #fff; }
color: #FFF; }
.opalestate-user-management .account-links a:hover i, .opalestate-user-management .account-links a:focus i {
color: #fff; }
color: #FFF; }
.opalestate-user-management .account-links li.active a {
color: #fff; }
color: #FFF; }
.opalestate-user-management .account-links li.active a i {
color: #fff; }
color: #FFF; }
.opalestate-user-management .site-main {
padding-top: 15px; }
padding-top: 60px;
padding-bottom: 60px; }
.opalestate-my-reviews .commentlist {
margin: 0; }

@ -81,13 +81,12 @@
.opalestate-user-greeting {
.howdy {
float: right;
padding-left: 5px;
padding-right: 5px;
padding-top: 5px;
font-weight: 700;
}.opalestate-popup
}
.popup-head {
float:left;
float:right;
}
.popup-head a {
color:$white;
@ -114,6 +113,25 @@
padding:0;
margin :0 ;
list-style:none;
li {
&:hover {
.count {
background-color:$primary;
color:$white;
}
}
}
}
.count {
color:$primary;
padding:3px 8px;
font-size: 11px;
min-width: 20px;
text-align: center;
background-color: $border-color;
@include border-radius(50%);
margin-left:5px;
}
}
@ -121,7 +139,7 @@
.dashboard-navbar {
background-color: #1d2329;
padding:20px $grid-gutter-width;
border-left: 1px solid #282d33;
border-left: 1px solid #181c21;
margin-bottom: $grid-gutter-width/2;
ul{
margin-bottom: 0;
@ -198,7 +216,7 @@
content: "";
z-index: 2;
transform: translateX(-50%);
right:25%;
right:-15px;
top: -14px;
border-bottom: 25px solid rgb(255, 255, 255);
border-left: 20px solid transparent;
@ -321,18 +339,15 @@
background-color:#1d2329;
min-height:900px;
position:fixed;
left:0;
width:251px;
height:100%;
z-index:100;
top:0px;
left:0;
border-right:1px solid #21272e;
.navbar-brand {
text-align: center;
margin: 50px 0 60px 0;
.custom-logo-link {
padding: $grid-gutter-width*2 $grid-gutter-width;
border-bottom:1px solid rgba(255,255,255, 0.1);
}
margin: $grid-gutter-width 0;
}
.user-dasboard-sidebar-inner{
padding-top:20px;
@ -385,26 +400,26 @@
&:hover,
&:focus {
//background-color:#0073aa;
color:#fff;
color:$white;
i {
color:#fff;
color:$white;
}
}
}
li.active {
a {
//background-color:#0073aa;
color:#fff;
color:$white;
i {
color:#fff;
color:$white;
}
}
}
}
.site-main {
padding-top:$padding-base;
$padding-bottom:$padding-base;
padding-top: $grid-gutter-width*2;
padding-bottom: $grid-gutter-width*2;
}
}

@ -346,6 +346,17 @@ class Opalestate_Settings_Property_Tab extends Opalestate_Settings_Base_Tab {
],
];
$fields[] = [
'name' => esc_html__( 'Show Virtual Tour tab', 'opalestate-pro' ),
'desc' => esc_html__( 'Show Virtual Tour tab in the single property page.', 'opalestate-pro' ),
'id' => 'enable_single_virtual_tour',
'type' => 'switch',
'options' => [
'on' => esc_html__( 'Enable', 'opalestate-pro' ),
'off' => esc_html__( 'Disable', 'opalestate-pro' ),
],
];
$fields[] = [
'name' => esc_html__( 'Show Map tab', 'opalestate-pro' ),
'desc' => esc_html__( 'Show Map tab in the single property page.', 'opalestate-pro' ),

@ -62,7 +62,8 @@ class OpalEstate_Enqueue {
/**
* Enqueue 3rd.
*/
wp_enqueue_style( 'fontawesome', OPALESTATE_PLUGIN_URL . 'assets/3rd/fontawesome/css/all.min.css', null, '5.11.2', false );
wp_register_style( 'fontawesome', OPALESTATE_PLUGIN_URL . 'assets/3rd/fontawesome/css/all.min.css', null, '5.11.2', false );
wp_enqueue_style( 'fontawesome' );
wp_enqueue_style( 'hint', OPALESTATE_PLUGIN_URL . 'assets/3rd/hint/hint.min.css', null, '1.3', false );
wp_enqueue_style( 'select2', OPALESTATE_PLUGIN_URL . 'assets/3rd/select2/css/select2.min.css', null, '1.3', false );
wp_enqueue_script( 'select2', OPALESTATE_PLUGIN_URL . 'assets/3rd/select2/js/select2.min.js', null, '1.3', false );

@ -140,6 +140,7 @@ class Opalestate_Property {
'attachments',
'facilities',
'video',
'virtual_tour',
'map',
'nearby',
'walkscores',
@ -189,7 +190,7 @@ class Opalestate_Property {
$value = get_post_meta( $this->post_id, $field['id'], true );
}
$value = isset( $field['unit'] ) ? $value . ' ' . $field['unit'] : $value;
$value = isset( $field['unit'] ) && $field['unit'] ? $value . ' ' . $field['unit'] : $value;
$this->metabox_info[ $id ] = [ 'label' => $field['name'], 'value' => $value ];
}

@ -27,7 +27,11 @@ function opalestate_single_property_layout_default() {
add_action( 'opalestate_after_single_property_summary', 'opalestate_property_views_statistics', 50 );
// add_action( 'opalestate_after_single_property_summary', '', 55 );
add_action( 'opalestate_after_single_property_summary', 'opalestate_property_tags', 60 );
add_action( 'opalestate_after_single_property_summary', 'comments_template', 65 );
if ( opalestate_get_option( 'enable_property_reviews' ) ) {
add_action( 'opalestate_after_single_property_summary', 'comments_template', 65 );
}
add_action( 'opalestate_after_single_property_summary_v2', 'opalestate_property_map_v2', 5 );
////// sidebar ////////
@ -70,7 +74,11 @@ function opalestate_single_property_layout_v2() {
// add_action( 'opalestate_after_single_property_summary', 'opalestate_property_author', 55 );
add_action( 'opalestate_after_single_property_summary', 'opalestate_property_tags', 60 );
add_action( 'opalestate_after_single_property_summary', 'comments_template', 65 );
if ( opalestate_get_option( 'enable_property_reviews' ) ) {
add_action( 'opalestate_after_single_property_summary', 'comments_template', 65 );
}
add_action( 'opalestate_after_single_property_summary_v2', 'opalestate_property_map_v2', 5 );
@ -107,7 +115,11 @@ function opalestate_single_property_layout_v3() {
// add_action( 'opalestate_after_single_property_summary', 'opalestate_property_author', 55 );
add_action( 'opalestate_after_single_property_summary', 'opalestate_property_tags', 60 );
add_action( 'opalestate_after_single_property_summary', 'comments_template', 65 );
if ( opalestate_get_option( 'enable_property_reviews' ) ) {
add_action( 'opalestate_after_single_property_summary', 'comments_template', 65 );
}
add_action( 'opalestate_after_single_property_summary_v2', 'opalestate_property_map_v2', 5 );
add_action( 'opalestate_single_property_sidebar', 'opalestate_property_author_v2', 5 );
@ -129,7 +141,6 @@ function opalestate_single_property_layout_v4() {
add_action( 'opalestate_single_property_summary', 'opalestate_property_facilities', 17 );
add_action( 'opalestate_single_property_summary', 'opalestate_property_attachments', 18 );
add_action( 'opalestate_after_single_property_summary', 'opalestate_property_video', 20 );
add_action( 'opalestate_after_single_property_summary', 'opalestate_property_virtual_tour', 25 );
add_action( 'opalestate_after_single_property_summary', 'opalestate_property_map', 30 );
@ -139,9 +150,12 @@ function opalestate_single_property_layout_v4() {
add_action( 'opalestate_after_single_property_summary', 'opalestate_property_apartments', 45 );
add_action( 'opalestate_after_single_property_summary', 'opalestate_property_views_statistics', 50 );
// add_action( 'opalestate_after_single_property_summary', 'opalestate_property_author', 55 );
add_action( 'opalestate_after_single_property_summary', 'opalestate_property_tags', 60 );
add_action( 'opalestate_after_single_property_summary', 'comments_template', 65 );
if ( opalestate_get_option( 'enable_property_reviews' ) ) {
add_action( 'opalestate_after_single_property_summary', 'comments_template', 65 );
}
add_action( 'opalestate_after_single_property_summary_v2', 'opalestate_property_map_v2', 5 );
add_action( 'opalestate_single_property_sidebar', 'opalestate_property_author_v2', 5 );
@ -176,7 +190,11 @@ function opalestate_single_property_layout_v5() {
add_action( 'opalestate_after_single_property_summary', 'opalestate_property_views_statistics', 50 );
add_action( 'opalestate_after_single_property_summary', 'opalestate_property_tags', 60 );
add_action( 'opalestate_after_single_property_summary', 'comments_template', 65 );
if ( opalestate_get_option( 'enable_property_reviews' ) ) {
add_action( 'opalestate_after_single_property_summary', 'comments_template', 65 );
}
add_action( 'opalestate_after_single_property_summary_v2', 'opalestate_property_map_v2', 5 );
add_filter( 'opalestate_thumbnail_nav_column', function () {
@ -229,6 +247,7 @@ function opalestate_single_property_layout( $layout ) {
break;
}
}
add_action( 'opalestate_single_property_layout', 'opalestate_single_property_layout' );
/**

@ -17,7 +17,7 @@ class Opalestate_Field_Iconpicker {
const VERSION = '1.0.0';
/**
* Initialize the plugin by hooking into CMB2
* Initialize the plugin by hooking into CMB2.
*/
public function __construct() {
add_filter( 'cmb2_render_opal_iconpicker', [ $this, 'render_iconpicker' ], 10, 5 );
@ -28,14 +28,16 @@ class Opalestate_Field_Iconpicker {
$fontawesome_key = 'opalestate_fontawesome_data';
$icon_data = [];
if ( false === ( $fontawesome_icons = get_transient( $fontawesome_key ) ) ) {
$fontawesome = new Opalestate_Iconpicker_Fontawesome();
$fontawesome = new Opalestate_Iconpicker_Fontawesome();
$fontawesome_icons = $fontawesome->get_icons();
set_transient( $fontawesome_key, $fontawesome_icons, 24 * 7 * HOUR_IN_SECONDS );
$icon_data[] = $fontawesome_icons;
}
var_dump($icon_data);
return $icon_data;
$icon_data = array_merge( $icon_data, $fontawesome_icons );
return apply_filters( 'opalestate_get_font_data', $icon_data );
}
/**
@ -44,44 +46,44 @@ class Opalestate_Field_Iconpicker {
public function render_iconpicker( $field, $field_escaped_value, $field_object_id, $field_object_type, $field_type_object ) {
$this->setup_admin_scripts();
$users = $field->value;
$output = sprintf(
'<select id="%1$s" class="opalestate-iconpicker" name="%2$s">',
sanitize_key( $field->args['_id'] ),
esc_attr( $field->args['_id'] )
);
var_dump($this->get_icons());
foreach ( $this->get_icons() as $icon_item ) {
$full_icon_class = $icon_item['prefix'] . ' ' . $icon_item['class'];
$output .= '<option value="' . $full_icon_class . '" ' . selected( $full_icon_class, $field->escaped_value(), false ) . '>' . esc_html( $icon_item['class'] ) . '</option>';
}
// $output = sprintf(
// '<select id="%1$s" class="%2$s" name="%3$s">',
// sanitize_key( $this->form->form_id . $args['id'] ),
// esc_attr( $args['class'] ),
// esc_attr( $args['id'] )
// );
//
// foreach ( $this->icon_data as $icon_item ) {
// $full_icon_class = $icon_item['prefix'] . ' ' . $icon_item['class'];
// $output .= '<option value="' . $full_icon_class . '" ' . selected( $full_icon_class, $value, false ) . '>' . esc_html( $icon_item['class'] ) . '</option>';
// }
//
// $output .= '</select>';
//
// echo $output;
$output .= '</select>';
echo '<p class="description">' . $field->args( 'description' ) . '</p>';
echo $output;
}
/**
* Sanitize data.
*/
public function sanitize( $override_value, $value, $object_id, $field_args ) {
return $value;
return sanitize_text_field( $value );
}
/**
* Enqueue scripts and styles.
*/
public function setup_admin_scripts() {
wp_register_style( 'fontawesome', OPALESTATE_PLUGIN_URL . 'assets/3rd/fontawesome/css/all.min.css', null, '5.11.2', false );
// Iconpicker.
wp_register_style( 'fonticonpicker', plugins_url( 'assets/css/jquery.fonticonpicker.min.css', __FILE__ ), [], self::VERSION );
wp_register_style( 'fonticonpicker-grey-theme', plugins_url( 'assets/themes/grey-theme/jquery.fonticonpicker.grey.min.css', __FILE__ ), [], self::VERSION );
wp_register_style( 'fonticonpicker-grey-theme', plugins_url( 'assets/themes/grey-theme/jquery.fonticonpicker.grey.min.css', __FILE__ ), [ 'fontawesome' ], self::VERSION );
wp_enqueue_style( 'fonticonpicker' );
wp_enqueue_style( 'fonticonpicker-grey-theme' );
wp_enqueue_script( 'fonticonpicker', plugins_url( 'assets/js/jquery.fonticonpicker.min.js', __FILE__ ), [], '2.0.0' );
wp_enqueue_script( 'opalestate-fonticonpicker', plugins_url( 'assets/js/script.js', __FILE__ ), [ 'fonticonpicker' ], self::VERSION );
}
}

@ -99,7 +99,7 @@ $id = time();
<div class="opalestate-tab-content" id="tab-content-team">
<div class="opalestate-box-content">
<h4 class="outbox-title"><?php esc_html_e( 'Team', 'opalestate-pro' ); ?></h4>
<?php echo $team; ?>
<?php echo $team; ?>
</div>
</div>
<?php endif; ?>
@ -109,7 +109,7 @@ $id = time();
<div class="opalestate-box-content">
<h4 class="outbox-title"><?php esc_html_e( 'Properties', 'opalestate-pro' ); ?></h4>
<div class="opalestate-box">
<?php echo $properties; ?>
<?php echo opalestate_load_template_path( 'single-agency/properties' ); ?>
</div>
</div>
</div>
@ -118,7 +118,11 @@ $id = time();
</div>
</div>
<?php comments_template(); ?>
<?php
if ( opalestate_get_option( 'enable_agency_reviews' ) ) {
comments_template();
}
?>
<div class="content-bottom">
<?php do_action( 'opalestate_single_agency_content_bottom' ); ?>

@ -14,7 +14,11 @@ $id = time();
<div class="col-md-8 col-sm-12">
<ul class="list-inline opalestate-scroll-elements">
<li><a href="#block-description" class="active"><?php esc_html_e( 'Description', 'opalestate-pro' ); ?></a></li>
<li><a href="#reviews"><?php esc_html_e( 'Review', 'opalestate-pro' ); ?></a></li>
<?php if ( opalestate_get_option( 'enable_agent_reviews' ) ) : ?>
<li><a href="#reviews"><?php esc_html_e( 'Review', 'opalestate-pro' ); ?></a></li>
<?php endif; ?>
<li><a href="#block-my-properties"><?php esc_html_e( 'Properties', 'opalestate-pro' ); ?></a></li>
</ul>
</div>
@ -101,7 +105,11 @@ $id = time();
<?php endif ?>
</div><!-- .entry-content -->
<?php comments_template(); ?>
<?php
if ( opalestate_get_option( 'enable_agent_reviews' ) ) {
comments_template();
}
?>
<meta itemprop="url" content="<?php the_permalink(); ?>"/>

@ -1,22 +1,36 @@
<?php
global $property, $post;
$amenities = $property->get_amenities();
$amenities = $property->get_amenities();
?>
<?php if ( $property->get_block_setting( 'amenities' ) && $amenities ): ?>
<div class="property-amenities box-inner-summary">
<h5 class="list-group-item-heading"><?php esc_html_e( "Amenities", "opalestate" ); ?></h5>
<h5 class="list-group-item-heading"><?php esc_html_e( 'Amenities', 'opalestate-pro' ); ?></h5>
<div class="list-group-item-text">
<div class="opal-row">
<?php foreach ( $amenities as $amenity ): ?>
<div class="col-lg-4 col-sm-4 <?php if ( has_term( $amenity->term_id, 'opalestate_amenities', $post ) ) : ?>active<?php endif; ?>">
<?php
if ( $image_id = get_term_meta( $amenity->term_id, 'opalestate_amt_image_id', true )) {
echo wp_get_attachment_image( $image_id );
}
?>
<?php echo esc_html( $amenity->name ); ?> <i class="fa fa-check"></i>
<?php
if ( apply_filters( 'opalestate_hide_unset_amenity', false ) && ! has_term( $amenity->term_id, 'opalestate_amenities', $post ) ) {
continue;
}
?>
<div class="col-lg-4 col-sm-4">
<div class="amenity-item <?php echo has_term( $amenity->term_id, 'opalestate_amenities', $post ) ? 'active' : ''; ?>">
<?php
if ( $icon = get_term_meta( $amenity->term_id, 'opalestate_amt_icon', true ) ) {
echo '<span class="amenity-icon"><i class="' . esc_attr( $icon ) . '"></i></span>';
} elseif ( $image_id = get_term_meta( $amenity->term_id, 'opalestate_amt_image_id', true ) ) {
echo wp_get_attachment_image( $image_id );
}
?>
<?php echo esc_html( $amenity->name ); ?>&nbsp;
<?php if ( has_term( $amenity->term_id, 'opalestate_amenities', $post ) ) : ?>
<?php echo apply_filters( 'opalestate_amenity_check_icon', '<i class="fa fa-check"></i>' ); ?>
<?php else : ?>
<?php echo apply_filters( 'opalestate_amenity_uncheck_icon', '<i class="fa fa-check"></i>' ); ?>
<?php endif; ?>
</div>
</div>
<?php endforeach; ?>
</div>

@ -2,9 +2,13 @@
global $property;
$infos = $property->get_meta_fullinfo();
$taxs = $property->get_types_tax();
$taxs = $property->get_types_tax();
if ( ! $infos && ! $taxs ) {
return;
}
?>
<div class="property-information box-inner-summary">
<h5><?php esc_html_e( 'Quick Information', 'opalestate-pro' ); ?></h5>
<div class="box-content">
@ -33,4 +37,4 @@ $taxs = $property->get_types_tax();
<?php endif; ?>
</ul>
</div>
</div>
</div>

@ -5,15 +5,18 @@ if ( ! $property->get_block_setting( 'video' ) ) {
return;
}
$videoURL = $property->get_video_url();
$video_url = $property->get_video_url();
if ( ! $video_url ) {
return;
}
?>
<?php if ( $videoURL ) : ?>
<div class="opalestate-box-content property-video-session">
<h4 class="outbox-title" id="block-video"><?php esc_html_e( 'Video', 'opalestate-pro' ); ?></h4>
<div class="opalestate-box">
<div class="box-info">
<?php echo wp_oembed_get( $videoURL ); ?>
<?php echo wp_oembed_get( $video_url ); ?>
</div>
</div>
</div>
<?php endif; ?>

@ -1,15 +1,22 @@
<?php
global $property;
$virtualTour = $property->get_virtual_tour();
if ( ! $property->get_block_setting( 'virtual_tour' ) ) {
return;
}
$virtual_tour = $property->get_virtual_tour();
if ( ! $virtual_tour ) {
return;
}
?>
<?php if( $virtualTour ) : ?>
<div class="opalestate-box-content property-360-virtual-session">
<h4 class="outbox-title" id="block-tour360"><?php esc_html_e( '360° Virtual Tour', 'opalestate-pro' ); ?></h4>
<h4 class="outbox-title" id="block-tour360"><?php esc_html_e( '360° Virtual Tour', 'opalestate-pro' ); ?></h4>
<div class=" opalestate-box">
<div class="box-info">
<?php echo do_shortcode( $virtualTour ); ?>
<?php echo do_shortcode( $virtual_tour ); ?>
</div>
</div>
</div>
<?php endif; ?>

@ -17,17 +17,12 @@ if ( ! class_exists( 'OpalEstate_User' ) ) {
return;
}
get_header( 'no-sidebar' );
$user_id = get_current_user_id();
$current_user = wp_get_current_user();
$user_info = "<span class='display-name'>{$current_user->display_name}</span>";
if ( $current_user->display_name !== $current_user->user_login ) {
$user_info .= "<span class='username'>{$current_user->user_login}</span>";
}
?>
<?php if ( $user_id ): ?>
<?php get_header( 'no-sidebar' ); ?>
<div class="dashboard-navbar">
<div class="clearfix">
<div class="pull-left navbar-left">
@ -66,7 +61,7 @@ if ( $current_user->display_name !== $current_user->user_login ) {
</div>
<div class="wrapper opalestate-user-management" id="opalestate-user-management">
<div class="container-full" id="content">
<div class="container" id="content">
<div class="opal-row-inner">
<div class=" user-dasboard-sidebar">
<div class="navbar-brand">
@ -134,7 +129,9 @@ if ( $current_user->display_name !== $current_user->user_login ) {
</div><!-- .row end -->
</div><!-- Container end -->
</div><!-- Wrapper end -->
<?php get_footer( 'header/no-sidebar' ); ?>
<?php else : ?>
<?php get_header(); ?>
<div class="wrapper opalestate-user-management" id="opalestate-user-management">
<div class="container">
<div class="opalestate-panel-myaccount">
@ -146,5 +143,5 @@ if ( $current_user->display_name !== $current_user->user_login ) {
</div>
</div>
</div>
<?php get_footer(); ?>
<?php endif; ?>
<?php get_footer( 'header/no-sidebar' ); ?>

@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
<?php endif; ?>
<div class="opalestate-admin-box">
<div class="opalestate-admin-box card-item inner">
<div class="box-content">
<?php
@ -30,8 +30,12 @@ if ( ! defined( 'ABSPATH' ) ) {
$user_info = "<span class='username'>({$current_user->user_login})</span>";
}
?>
<h3><?php esc_html_e( 'Edit User Profile', 'opalestate-pro' ); ?>&nbsp;<?php echo wp_kses_post( $user_info ); ?></h3>
<div class="heading">
<i class="fa fa-user"></i>
<span><?php esc_html_e( 'Edit User Profile', 'opalestate-pro' ); ?>&nbsp;<?php echo wp_kses_post( $user_info ); ?></span>
</div>
<?php
do_action( 'opalestate_profile_form_before' );
@ -47,10 +51,13 @@ if ( ! defined( 'ABSPATH' ) ) {
</div>
</div>
<div class="opalestate-admin-box">
<div class="opalestate-admin-box card-item inner">
<div class="box-content">
<h3><?php esc_html_e( 'Change Password', 'opalestate-pro' ); ?></h3>
<div class="heading">
<i class="fa fa-lock-open"></i>
<span><?php esc_html_e( 'Change Password', 'opalestate-pro' ); ?></span>
</div>
<?php
do_action( 'opalestate_profile_form_before' );