API Docs for: 1.38.2
Show:

File: core/ui/property_metaboxes.php

<?php
/**
 * Class WPP_UI
 *
 * @class WPP_UI
 */
class WPP_UI {

  /**
   * Loaded if this is a property page, and child properties exist.
   *
   * @method child_properties
   * @version 1.26.0
   * @author Andy Potanin <andy.potanin@twincitiestech.com>
   * @package WP-Property
   */
  function child_properties( $post ) {

    $children = get_posts( array(
      'post_parent' => $post->ID,
      'post_type' => 'property'
    ) );

    ?>
    <div class="wp-tab-panel">
      <ul>
        <?php  foreach ( $children as $child ) {
          echo '<li><a href="' . get_edit_post_link( $child->ID ) . '">' . $child->post_title . '</a></li>';
        } ?>
      </ul>
    </div>


  <?php

  }

  /**
   * Displays the primary metabox on property editing page.
   *
   *
   * @version 1.14.2
   * @author Andy Potanin <andy.potanin@twincitiestech.com>
   * @package WP-Property
   *
   */
  function page_attributes_meta_box( $post ) {

    $post_type_object = get_post_type_object( $post->post_type );
    if ( $post_type_object->hierarchical ) {
      $pages = wp_dropdown_pages( array( 'post_type' => $post->post_type, 'exclude_tree' => $post->ID, 'selected' => $post->post_parent, 'name' => 'parent_id', 'show_option_none' => __( '(no parent)', 'wpp' ), 'sort_column' => 'menu_order, post_title', 'echo' => 0 ) );
      if ( !empty( $pages ) ) {
        ?>

        <p><strong><?php _e( 'Parent', 'wpp' ) ?></strong></p>
        <label class="screen-reader-text" for="parent_id"><?php _e( 'Parent', 'wpp' ) ?></label>
        <?php echo $pages; ?>
      <?php
      } // end empty pages check
    } // end hierarchical check.
    if ( 'page' == $post->post_type && 0 != count( get_page_templates() ) ) {
      $template = !empty( $post->page_template ) ? $post->page_template : false;
      ?>
      <p><strong><?php _e( 'Template', 'wpp' ) ?></strong></p>
      <label class="screen-reader-text" for="page_template"><?php _e( 'Page Template', 'wpp' ) ?></label><select
        name="page_template" id="page_template">
        <option value='default'><?php _e( 'Default Template', 'wpp' ); ?></option>
        <?php page_template_dropdown( $template ); ?>
      </select>
    <?php } ?>
    <p><strong><?php _e( 'Order', 'wpp' ) ?></strong></p>
    <p><label class="screen-reader-text" for="menu_order"><?php _e( 'Order', 'wpp' ) ?></label><input name="menu_order"
        type="text"
        size="4"
        id="menu_order"
        value="<?php echo esc_attr( $post->menu_order ) ?>"/>
    </p>
    <p><?php if ( 'page' == $post->post_type )
        _e( 'Need help? Use the Help tab in the upper right of your screen.', 'wpp' ); ?></p>
  <?php
  }

  /**
   * Prints Property Atrributes Metabox
   * on Property Edit Page
   *
   * @param object $object. Property
   * @param array $attrs. Metabox attributes
   */
  function metabox_meta( $object, $attrs ) {
    global $wp_properties, $wpdb;
    static $loaded = false;

    $property = WPP_F::get_property( $object->ID );

    $instance = $attrs[ 'id' ];
    $stats_group = ( !empty( $attrs[ 'args' ][ 'group' ] ) ? $attrs[ 'args' ][ 'group' ] : false );

    $disabled_attributes = (array) $wp_properties[ 'geo_type_attributes' ];
    $property_stats = (array) $wp_properties[ 'property_stats' ];
    $stat_keys = array_keys( $property_stats );

    //** If an attribute with 'property_type' slug exists, we tweak UI *'
    if ( in_array( 'property_type', $stat_keys ) ) {
      $property_type_in_attributes = true;
    } else {
      $property_type_in_attributes = false;
    }

    $this_property_type = $property[ 'property_type' ];

    //* Set default property type */
    if ( empty( $this_property_type ) && empty( $property[ 'post_name' ] ) ) {
      $this_property_type = WPP_F::get_most_common_property_type();
    }

    //** Check for current property type if it is deleted */
    if ( is_array( $wp_properties[ 'property_types' ] ) && isset( $property[ 'property_type' ] ) && !in_array( $property[ 'property_type' ], array_keys( $wp_properties[ 'property_types' ] ) ) ) {
      $wp_properties[ 'property_types' ][ $property[ 'property_type' ] ] = WPP_F::de_slug( $property[ 'property_type' ] );
      $wp_properties[ 'descriptions' ][ 'property_type' ] = '<span class="attention">' . sprintf( __( '<strong>Warning!</strong> The %1s property type has been deleted.', 'wpp' ), $wp_properties[ 'property_types' ][ $property[ 'property_type' ] ] ) . '</span>';
    }

    ?>

    <?php if ( !$loaded ) : ?>
      <style type="text/css">
        <?php if ($wp_properties['configuration']['completely_hide_hidden_attributes_in_admin_ui'] == 'true'): ?>
        .disabled_row {
          display: none;
        }

        <?php endif; ?>
      </style>

      <script type="text/javascript">
        jQuery( document ).ready( function () {

          //* Hack for CSS. View of the current metabox */
          jQuery( '.inside table.property_meta' ).parents( '.inside' ).css( {
            'margin': '0',
            'padding': '0'
          } );

          // Done with PHP but in case of page reloads
          wpp_toggle_attributes();

          /*
           * Display prefill values.
           * Hide "Show common values" link.
           * Display "Cancel" button
           */
          jQuery( ".wpp_show_prefill_values" ).click( function () {
            var parent_cell = jQuery( this ).parents( '.wpp_attribute_cell' );
            jQuery( this ).hide();
            jQuery( this ).parent().children( '.wpp_prefill_attribute' ).show();
            jQuery( '.wpp_show_prefill_values_cancel', parent_cell ).show();
          } );

          /*
           * Cancel displaying prefill values.
           * Hide "Cancel" button
           * Hide all pre-filled values
           * Show "Show common values" link.
           */
          jQuery( ".wpp_show_prefill_values_cancel" ).click( function () {
            jQuery( this ).hide();
            var parent_cell = jQuery( this ).parents( '.wpp_attribute_cell' );
            jQuery( '.wpp_prefill_attribute', parent_cell ).hide();
            jQuery( '.wpp_show_prefill_values', parent_cell ).show();
          } );

          jQuery( ".wpp_attribute_row input.text-input.wpp_numeric, .wpp_attribute_row input.text-input.wpp_currency" ).change( function () {
            this_value = jQuery( this ).val();
            jQuery( this ).val( this_value.replace( /[^\d|\.]/g, '' ) );
          } );

          jQuery( ".wpp_prefill_attribute" ).click( function () {
            var value = jQuery( this ).text();
            var parent_cell = jQuery( this ).parents( '.wpp_attribute_cell' );
            jQuery( 'input', parent_cell ).val( value );
            ;
            jQuery( '.wpp_prefill_attribute', parent_cell ).hide();
            jQuery( '.wpp_show_prefill_values', parent_cell ).show();
          } );

          // Setup toggling settings
          jQuery( "#wpp_meta_property_type" ).change( function () {
            wpp_toggle_attributes();
          } );

          function wpp_toggle_attributes () {
            var property_type = jQuery( "#wpp_meta_property_type" ).val();

            if ( property_type == "" ) {
              return;
            }

            <?php if (count($wp_properties['hidden_attributes']) < 1) { ?>
            return;
            <?php } else { ?>
            // Show all fields
            jQuery( ".wpp_attribute_row" ).removeClass( 'disabled_row' );
            switch ( property_type ) {
              <?php if (is_array($wp_properties['hidden_attributes'])) : ?>
              <?php foreach ($wp_properties['hidden_attributes'] as $property_type => $hidden_values): ?>
              case '<?php echo $property_type; ?>':
              <?php if (is_array($hidden_values))  { ?>
              <?php foreach ($hidden_values as $value) { ?>
                jQuery( ".wpp_attribute_row_<?php echo $value; ?>" ).addClass( 'disabled_row' );
              <?php } ?>
              <?php } ?>
                break;
              <?php endforeach; ?>
              <?php endif; ?>
            }

            /* Determine if all attributes of the metabox are hidden
             * and Show/Hide metabox depending on it
             */
            jQuery( 'table.property_meta' ).each( function ( ti, te ) {
              var s = false;
              jQuery( 'tr', te ).each( function ( ri, re ) {
                if ( !jQuery( re ).hasClass( 'disabled_row' ) ) {
                  s = true;
                }
              } );
              var b = jQuery( te ).parents( '.postbox' );
              if ( !b.length > 0 ) {
                b = jQuery( te ).parents( '.postbox_closed' );
              }
              if ( s ) {
                b.show();
              } else {
                b.hide();
              }
            } );
            <?php } ?>
          }

        } );
      </script>
      <?php $loaded = true; ?>
    <?php endif; ?>

    <table class="widefat property_meta">

    <?php //* 'Falls Under' field should be shown only in 'General Information' metabox */ ?>
    <?php if ( $instance == 'wpp_property_meta' ) : ?>
      <?php if ( !WPP_F::has_children( $object->ID ) || ( !empty( $wp_properties[ 'configuration' ][ 'allow_parent_deep_depth' ] ) && $wp_properties[ 'configuration' ][ 'allow_parent_deep_depth' ] == 'true' ) ) : ?>
        <?php //** Do not do page dropdown when there are a lot of properties */ ?>
        <?php $property_count = $wpdb->get_var( "SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_type = 'property' AND post_status = 'publish' " ); ?>
        <?php if ( $property_count < 200 ) : ?>
          <?php
          $params = array(
            'post_type' => 'property',
            'exclude_tree' => $object->ID,
            'selected' => $object->post_parent,
            'name' => 'parent_id',
            'show_option_none' => __( '(no parent)', 'wpp' ),
            'sort_column' => 'menu_order, post_title',
            'echo' => 0,
            'depth' => 1
          );
          if ( !empty( $wp_properties[ 'configuration' ][ 'allow_parent_deep_depth' ] ) && $wp_properties[ 'configuration' ][ 'allow_parent_deep_depth' ] == 'true' ) {
            unset( $params[ 'depth' ] );
          }
          $pages = wp_dropdown_pages( apply_filters( 'wpp::falls_under::dropdown_pages', $params ) );
          ?>
          <?php if ( !empty( $pages ) ) : ?>
            <tr
              class="wpp_attribute_row_parent wpp_attribute_row <?php if ( is_array( $wp_properties[ 'hidden_attributes' ][ $property[ 'property_type' ] ] ) && in_array( 'parent', $wp_properties[ 'hidden_attributes' ][ $property[ 'property_type' ] ] ) ) {
                echo 'disabled_row;';
              } ?>">
              <th><?php _e( 'Falls Under', 'wpp' ); ?></th>
              <td><?php echo $pages; ?></td>
            </tr>
          <?php endif; ?>
        <?php else : ?>
          <tr
            class="wpp_attribute_row_parent wpp_attribute_row <?php if ( is_array( $wp_properties[ 'hidden_attributes' ][ $property[ 'property_type' ] ] ) && in_array( 'parent', $wp_properties[ 'hidden_attributes' ][ $property[ 'property_type' ] ] ) ) {
              echo 'disabled_row;';
            } ?>">
            <th><?php _e( 'Falls Under', 'wpp' ); ?></th>
            <td>
              <input name="parent_id" value="<?php echo $property[ 'parent_id' ]; ?>"/>
              <span class="description"><?php _e( 'ID of parent property', 'wpp' ); ?></span>
            </td>
          </tr>
        <?php endif; ?>
      <?php endif; ?>
      <?php if ( !$property_type_in_attributes ) {
        WPP_UI::property_type_selector( $property );
      } ?>
    <?php endif; ?>

    <?php

    //** Detect attributes that were taken from a range of child properties. */
    $upwards_inherited_attributes = is_array( $property[ 'system' ][ 'upwards_inherited_attributes' ] ) ? $property[ 'system' ][ 'upwards_inherited_attributes' ] : array();

    foreach ( $property_stats as $slug => $label ) {

      $attribute_data = WPP_F::get_attribute_data( $slug );

      $attribute_description = array();

      $attribute_description[ ] = ( $attribute_data[ 'numeric' ] || $attribute_data[ 'currency' ] ? __( 'Numbers only.', 'wpp' ) : '' );
      $attribute_description[ ] = ( !empty( $wp_properties[ 'descriptions' ][ $slug ] ) ? $wp_properties[ 'descriptions' ][ $slug ] : '' );

      //* Setup row classes */
      $row_classes = array( 'wpp_attribute_row' );
      $row_classes[ ] = "wpp_attribute_row_{$slug}";

      if ( is_array( $wp_properties[ 'hidden_attributes' ][ $property[ 'property_type' ] ] ) && in_array( 'parent', $wp_properties[ 'hidden_attributes' ][ $property[ 'property_type' ] ] ) ) {
        $row_classes[ ] = 'disabled_row';
      }
      if ( in_array( $slug, (array) $wp_properties[ 'hidden_frontend_attributes' ] ) ) {
        $row_classes[ ] = 'wpp_hidden_frontend_attribute';
      }

      //** Make note of attributes that consist of ranges upwards inherited from child properties */
      if ( in_array( $slug, $upwards_inherited_attributes ) ) {
        $row_classes[ ] = 'wpp_upwards_inherited_attributes';
        $disabled_attributes[ ] = $slug;
        $attribute_description = array( __( 'Values aggregated from child properties.', 'wpp' ) );
      }

      if ( $wp_properties[ 'configuration' ][ 'allow_multiple_attribute_values' ] == 'true' && !in_array( $slug, apply_filters( 'wpp_single_value_attributes', array( 'property_type' ) ) ) ) {
        $row_classes[ ] = 'wpp_allow_multiple';
      }

      //* Determine if attribute is assigned to group */
      $gslug = false;
      $group = false;

      if ( !empty( $wp_properties[ 'property_stats_groups' ][ $slug ] ) ) {
        $gslug = $wp_properties[ 'property_stats_groups' ][ $slug ];
        $group = $wp_properties[ 'property_groups' ][ $gslug ];
      }

      if ( $group && $instance == "wpp_property_meta" ) {
        continue;
      } else if ( $instance != "wpp_property_meta" && $instance != $gslug ) {
        continue;
      }

      //** Render Property Type selection box here if it exists as an attribute */
      if ( $property_type_in_attributes && $slug == 'property_type' ) {
        WPP_UI::property_type_selector( $property );
        continue;
      }

      //** Check for pre-defined values */
      if ( !empty( $wp_properties[ 'predefined_values' ][ $slug ] ) ) {
        $predefined_values = str_replace( array( ', ', ' ,' ), array( ',', ',' ), trim( $wp_properties[ 'predefined_values' ][ $slug ] ) );

        if ( is_array( explode( ',', $predefined_values ) ) ) {
          $predefined_values = explode( ',', $predefined_values );
        } else {
          $predefined_values = array( $predefined_values );
        }

      } else {
        $predefined_values = false;
      }

      //** Check input type */
      $input_type = $wp_properties[ 'admin_attr_fields' ][ $slug ];

      if ( $input_type == 'checkbox' ) {
        $predefined_values = array( 'true,false' );
      }

      //** If input type is not set, but pre-defined values exist, try to guess what input type user intended to have */
      if ( empty( $input_type ) && is_array( $predefined_values ) ) {

        if ( count( $predefined_values ) == 2 && ( in_array( 'true', $predefined_values ) && in_array( 'false', $predefined_values ) ) ) {
          $input_type = 'checkbox';
        } else {
          $input_type = 'dropdown';
        }

      }

      //** If anything is missing we fall back on regular input field */
      if ( empty( $predefined_values ) || empty( $input_type ) ) {
        $input_type = false;
      }

      ?>

      <tr class="<?php echo implode( ' ', $row_classes ); ?>">

        <th>
          <label for="wpp_meta_<?php echo $slug; ?>"><?php echo $label; ?></label>
        </th>

        <td class="wpp_attribute_cell">

          <span
            class="disabled_message"><?php echo sprintf( __( 'Editing %s is disabled, it may be inherited.', 'wpp' ), $label ); ?></span>

          <?php if ( $attribute_data[ 'currency' ] && $wp_properties[ 'configuration' ][ 'currency_symbol_placement' ] == 'before' ) { ?>
            <span class="currency"><?php echo $wp_properties[ 'configuration' ][ 'currency_symbol' ]; ?></span>
          <?php } ?>


          <?php

          $value = $property[ $slug ];

          if ( $value === true ) {
            $value = 'true';
          }

          if ( in_array( $slug, (array) $disabled_attributes ) ) {

            $html_input = "<input type='text' id='wpp_meta_{$slug}' name='wpp_data[meta][{$slug}]' class='text-input wpp_field_disabled {$attribute_data['ui_class']}' value='{$value}' disabled='disabled' />";

          } else {

            switch ( $input_type ) {

              case 'checkbox':
                $html_input = "<input type='hidden' name='wpp_data[meta][{$slug}]' value='false' /><input " . checked( $value, 'true', false ) . "type='checkbox' id='wpp_meta_{$slug}' name='wpp_data[meta][{$slug}]' value='true' {$disabled} /> <label for='wpp_meta_{$slug}'>" . __( 'Enable.', 'wpp' ) . "</label>";
                break;

              case 'dropdown':
                foreach ( $predefined_values as $option ) {
                  $predefined_options[ $slug ][ ] = "<option " . selected( esc_attr( trim( $value ) ), esc_attr( trim( $option ) ), false ) . " value='" . esc_attr( $option ) . "'>" . apply_filters( 'wpp_stat_filter_' . $slug, $option ) . "</option>";
                }
                $html_input = "<select id='wpp_meta_{$slug}' name='wpp_data[meta][{$slug}]'><option value=''> - </option>" . implode( $predefined_options[ $slug ] ) . "</select>";
                break;

              default:
                $html_input = "<input type='text' id='wpp_meta_{$slug}' name='wpp_data[meta][{$slug}]' class='text-input {$attribute_data['ui_class']}' value=\"{$value}\" />";
                break;

            }

          }

          echo apply_filters( "wpp_property_stats_input_$slug", $html_input, $slug, $property );


          if ( $attribute_data[ 'currency' ] && $wp_properties[ 'configuration' ][ 'currency_symbol_placement' ] == 'after' ) {
            echo $wp_properties[ 'configuration' ][ 'currency_symbol' ];
          }

          ?>

          <span class="description">
              <?php echo implode( '', $attribute_description ); ?>
            </span>

          <?php do_action( 'wpp_ui_after_attribute_' . $slug, $object->ID ); ?>

        </td>
      </tr>
    <?php } ?>

    <?php //* 'Property Meta' fields should be shown only in 'General Information' metabox */ ?>
    <?php if ( $instance == 'wpp_property_meta' ) : ?>
      <?php $property_meta = $wp_properties[ 'property_meta' ]; ?>
      <?php foreach ( $property_meta as $slug => $label ): ?>
        <tr
          class="wpp_attribute_row wpp_attribute_row_<?php echo $slug; ?> <?php if ( is_array( $wp_properties[ 'hidden_attributes' ][ $property[ 'property_type' ] ] ) && in_array( 'parent', $wp_properties[ 'hidden_attributes' ][ $property[ 'property_type' ] ] ) ) echo 'disabled_row;'; ?>">
          <th><label for="wpp_data_meta_<?php echo $slug; ?>"><?php echo $label; ?></label></th>
          <td>
            <span
              class="disabled_message"><?php echo sprintf( __( 'Editing %s is disabled, it may be inherited.', 'wpp' ), $label ); ?></span>
            <textarea id="wpp_data_meta_<?php echo $slug; ?>"
              name="wpp_data[meta][<?php echo $slug; ?>]"><?php echo preg_replace( '%&ndash;|�%i', '-', get_post_meta( $object->ID, $slug, true ) ); ?></textarea>
            <?php if ( !empty( $wp_properties[ 'descriptions' ][ $slug ] ) ): ?>
              <span class="wpp_meta_description"><?php echo $wp_properties[ 'descriptions' ][ $slug ]; ?></span>
            <?php endif; ?>
          </td>
        </tr>
      <?php endforeach; ?>
    <?php endif; ?>

    </table>
  <?php
  }

  /**
   * Renders Filter Metabox ( All Properties page )
   *
   * @global type $wp_properties
   *
   * @param type $wp_list_table
   */
  function metabox_property_filter( $wp_list_table ) {

    $wp_list_table->search_box( 'Search', 'property' );

    $filters = WPP_F::get_search_filters();

    ?>
    <div class="misc-pub-section">
      <?php if ( !empty( $filters ) ) : ?>
        <?php foreach ( $filters as $key => $filter ) : ?>
          <?php
          //** If there are not available values we ignore filter */
          if ( empty( $filter[ 'values' ] ) || !is_array( $filter[ 'values' ] ) ) {
            continue;
          }
          ?>
          <ul class="wpp_overview_filters <?php echo $key; ?>">
            <li class="wpp_filter_section_title"><?php echo $filter[ 'label' ]; ?><a
                class="wpp_filter_show"><?php echo $key == 'post_status' ? __( 'Hide', 'wpp' ) : __( 'Show', 'wpp' ) ?></a>
            </li>
            <li class="all wpp_checkbox_filter" <?php echo $key == 'post_status' ? 'style="display:block;"' : '' ?> >
              <?php
              switch ( $filter[ 'type' ] ) {

                default:
                  break;

                case 'multi_checkbox':
                  ?>
                  <ul class="wpp_multi_checkbox">
                    <?php foreach ( $filter[ 'values' ] as $value => $label ) : ?>
                      <?php $unique_id = rand( 10000, 99999 ); ?>
                      <li>
                        <input name="wpp_search[<?php echo $key; ?>][]"
                          id="wpp_attribute_checkbox_<?php echo $unique_id; ?>" type="checkbox"
                          value="<?php echo $value; ?>"/>
                        <label for="wpp_attribute_checkbox_<?php echo $unique_id; ?>"><?php echo $label; ?></label>
                      </li>
                    <?php endforeach; ?>
                  </ul>
                  <?php
                  break;

                case 'dropdown':
                  $unique_id = rand( 10000, 99999 );
                  ?>
                  <select id="wpp_attribute_dropdown_<?php echo $unique_id; ?>"
                    class="wpp_search_select_field wpp_search_select_field_<?php echo $key; ?>"
                    name="wpp_search[<?php echo $key; ?>]">
                    <?php foreach ( $filter[ 'values' ] as $value => $label ) : ?>
                      <option
                        value="<?php echo esc_attr( $value ); ?>" <?php echo $value == $filter[ 'default' ] ? 'selected="selected"' : '' ?> >
                        <?php echo $label; ?>
                      </option>
                    <?php endforeach; ?>
                  </select>
                  <?php
                  break;

                case 'radio':
                  ?>
                  <ul>
                    <?php foreach ( $filter[ 'values' ] as $value => $label ) : ?>
                      <li>
                        <input id="radio_filter_<?php echo $value; ?>" type="radio"
                          value="<?php echo esc_attr( $value ); ?>"
                          name="wpp_search[<?php echo $key; ?>]" <?php echo( $value == $filter[ 'default' ] ? 'checked="checked"' : '' ); ?> />
                        <label for="radio_filter_<?php echo $value; ?>"><?php echo $label; ?></label>
                      </li>
                    <?php endforeach; ?>
                  </ul>
                  <?php
                  break;

              }
              ?>
            </li>
          </ul>

        <?php endforeach; ?>
      <?php endif; ?>
      <?php do_action( 'wpi_invoice_list_filter' ); ?>
    </div>

    <div class="major-publishing-actions">
      <div class="publishing-action">
        <?php submit_button( __( 'Filter Results', 'wpp' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
      </div>
      <br class='clear'/>
    </div>

  <?php
  }

  /**
   * Property Type Selector
   *
   * @param $property
   */
  function property_type_selector( $property ) {
    global $wp_properties;

    $attribute = WPP_F::get_attribute_data( 'property_type' );

    $type_label = ( $attribute[ 'label' ] ? $attribute[ 'label' ] : sprintf( __( '%1s Type', 'wpp' ), WPP_F::property_label() ) );

    $property_type_slugs = array_keys( (array) $wp_properties[ 'property_types' ] );

    if ( count( $wp_properties[ 'property_types' ] ) > 1 ) {
      ?>
      <tr
        class="wpp_attribute_row_type wpp_attribute_row <?php if ( is_array( $wp_properties[ 'hidden_attributes' ][ $property[ 'property_type' ] ] ) && in_array( 'type', $wp_properties[ 'hidden_attributes' ][ $property[ 'property_type' ] ] ) ) echo 'disabled_row;'; ?>">
        <th><?php echo $type_label ?></th>
        <td>
          <?php //* Get property types */ ?>
          <select id="wpp_meta_property_type" name="wpp_data[meta][property_type]" id="property_type">
            <option value=""></option>
            <?php foreach ( $wp_properties[ 'property_types' ] as $slug => $label ) { ?>
              <option <?php selected( strtolower( $property[ 'property_type' ] ), strtolower( $slug ) ); ?>
                value="<?php echo $slug; ?>"><?php echo $label; ?></option>
            <?php } ?>
          </select>
          <?php if ( !empty( $wp_properties[ 'descriptions' ][ 'property_type' ] ) ) { ?>
            <span class="description"><?php echo $wp_properties[ 'descriptions' ][ 'property_type' ]; ?></span>
          <?php } ?>
        </td>
      </tr>
    <?php } else { ?>
      <input type="hidden" id="wpp_meta_property_type" name="wpp_data[meta][property_type]" id="property_type"
        value="<?php echo( $property[ 'property_type' ] ? strtolower( $property[ 'property_type' ] ) : $property_type_slugs[ 0 ] ); ?>"/>
    <?php
    }

  }

}